Ответы:
Sed
sed 's/\s.*$//'
Grep
grep -o '^\S*'
Awk
awk '{print $1}'
Как указано в комментариях, -o
это не POSIX; однако как в GNU, так и в BSD он есть, поэтому он должен работать для большинства людей.
Кроме того, \s
/ \S
может быть не во всех системах, если ваша не распознает его, вы можете использовать буквальный пробел, или если вы хотите пробел и табуляцию, те, которые в выражении в скобках ( [...]
), или [[:blank:]]
класс символов (обратите внимание, что строго говоря \s
это эквивалентно [[:space:]]
и включает в себя вертикальные символы, такие как CR, LF или VT, которые вам, вероятно, не нужны).
awk
Один предполагает , что линии не начинаются с пробелом.
cut -d ' ' -f 1 < your-file
будет самым эффективным.
cut < file
против cut file
? Тогда см. Unix.stackexchange.com/a/70759/22565
И один через perl
,
$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
Через GNU grep,
$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
<
это полезно здесь?