Risposte:
sed
sed 's/\s.*$//'
grep
grep -o '^\S*'
awk
awk '{print $1}'
Come sottolineato nei commenti, -o
POSIX non è; tuttavia sia GNU che BSD ce l'hanno, quindi dovrebbe funzionare per la maggior parte delle persone.
Inoltre, \s
/ \S
potrebbe non essere su tutti i sistemi, se il tuo non lo riconosce puoi usare uno spazio letterale, o se vuoi spazio e tabulazione, quelli in una parentesi ( [...]
) o la [[:blank:]]
classe di caratteri (nota che a rigor di termini\s
è equivalente [[:space:]]
e include i caratteri di spaziatura verticale e CR, LF o VT che probabilmente non ti interessano).
L' awk
uno si assume le linee non iniziano con un carattere vuoto.
cut -d ' ' -f 1 < your-file
sarebbe il più efficiente.
E quello attraverso perl
,
$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
Attraverso GNU grep,
$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
<
è utile qui?