Utilisation de sed / awk pour supprimer quoi que ce soit après le premier espace


20
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.

Réponses:


35

Sed

sed 's/\s.*$//'

Grep

grep -o '^\S*'

Awk

awk '{print $1}'

Comme indiqué dans les commentaires, -on'est-ce pas POSIX; cependant GNU et BSD l'ont, donc cela devrait fonctionner pour la plupart des gens.

En outre, \s/ \Sne peut pas être sur tous les systèmes, si le vôtre ne reconnaît pas que vous pouvez utiliser un espace littéral, ou si vous voulez l' espace et onglet, ceux dans une expression de support ( [...]), ou la [[:blank:]]classe de caractères (notez que à proprement parler \sest é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 un suppose que les lignes ne commencent pas par un caractère vide.


14
cut -d ' ' -f 1 < your-file

serait le plus efficace.


4
J'ai remarqué cela dans plusieurs de vos réponses et je me demandais s'il y avait une raison à cela: vous semblez toujours ajouter une redirection d'entrée même lorsque la commande peut fonctionner sans elle. Pouvez-vous expliquer pourquoi l' <utilité ici?
Joseph R.

5
@JosephR. Tu veux dire cut < filevs cut file? Voir ensuite unix.stackexchange.com/a/70759/22565
Stéphane Chazelas

couper peut être la meilleure solution pour des problèmes aussi simples. Je réserverais awk (ou perl) pour une correspondance plus complexe.
ChuckCottrill

@StephaneChazelas Merci pour la perspicacité (caractéristique) :)
Joseph R.


1

Et l'un à travers perl,

$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd

Grâce à GNU grep,

$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.