aaaaaaaa 09
bbbbbbbb 90
ccccccccccccccc 89
ddddd 09
En utilisant sed/awk/replace, dans le texte ci-dessus, je veux supprimer tout ce qui vient après le premier espace de chaque ligne. Par exemple, la sortie sera:
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
toute aide serait appréciée.
Sed
sed 's/\s.*$//'
Grep
grep -o '^\S*'
Awk
awk '{print $1}'
Comme indiqué dans les commentaires, -o
n'est pas POSIX; cependant, les deux GNU et BSD l'ont, donc cela devrait fonctionner pour la plupart des gens.
Aussi, \s
/\S
peut ne pas être sur tous les systèmes, si le vôtre ne le reconnaît pas, vous pouvez utiliser un espace littéral, ou si vous voulez de l'espace et des tabulations, ceux d'une expression entre crochets ([...]
), ou la [[:blank:]]
classe de caractères (notez qu'à proprement parler \s
est équivalent à [[:space:]]
et inclut des caractères d'espacement vertical ainsi que CR, LF ou VT dont vous ne vous souciez probablement pas).
Le awk
suppose que les lignes ne commencent pas par un caractère vide.
cut -d ' ' -f 1 < your-file
serait le plus efficace.
awk '{print $1}' file
ou
sed 's/ .*//'
Et celui à travers Perl
,
$ Perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
Par GNU grep,
$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd