Antworten:
Sed
sed 's/\s.*$//'
Grep
grep -o '^\S*'
Awk
awk '{print $1}'
Wie in den Kommentaren erwähnt, -o
ist es nicht POSIX; GNU und BSD haben es jedoch, so dass es für die meisten Menschen funktionieren sollte.
Auch \s
/ \S
kann nicht auf allen Systemen sein, wenn Ihr es nicht erkennt man eine wörtliche Raum verwenden können, oder wenn Sie wollen Raum und Reiter, die in einem Ausdruck in eckigen Klammern ( [...]
) oder die [[:blank:]]
Zeichenklasse (beachten Sie, dass streng genommen \s
ist Entspricht [[:space:]]
und enthält Zeichen mit vertikalem Abstand sowie CR, LF oder VT, die Sie wahrscheinlich nicht interessieren.
Die awk
man davon ausgeht , die Linien nicht mit einem Leerzeichen beginnen.
cut -d ' ' -f 1 < your-file
wäre das effizienteste.
Und der eine durch perl
,
$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
Durch GNU grep,
$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
<
hier nützlich ist?