Verwenden Sie sed / awk, um nach dem ersten Leerzeichen alles zu entfernen

20
aaaaaaaa 09  
bbbbbbbb 90   
ccccccccccccccc  89  
ddddd 09

Mit sed / awk / replace möchte ich im obigen Text alles entfernen, was nach dem ersten Leerzeichen in jeder Zeile steht. Die Ausgabe wird zum Beispiel sein:

aaaaaaaa  
bbbbbbbb    
ccccccccccccccc  
ddddd 

Jede Hilfe wird geschätzt.

Rana Khan
quelle

Antworten:

35

Sed

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

Grep

grep -o '^\S*'

Awk

awk '{print $1}'

Wie in den Kommentaren erwähnt, -oist es nicht POSIX; GNU und BSD haben es jedoch, so dass es für die meisten Menschen funktionieren sollte.

Auch \s/ \Skann 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 \sist 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.

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

wäre das effizienteste.

Stéphane Chazelas
quelle
4
Ich habe dies in mehreren Ihrer Antworten bemerkt und mich gefragt, ob es einen Grund dafür gibt: Sie scheinen immer eine Eingabeumleitung hinzuzufügen, auch wenn der Befehl ohne sie funktionieren kann. Können Sie bitte erklären, warum das <hier nützlich ist?
Joseph R.
5
@ JosephR. Du meinst cut < filevs cut file? Dann siehe unix.stackexchange.com/a/70759/22565
Stéphane Chazelas
Schnitt kann die beste Lösung für Probleme sein, die so einfach sind. Ich würde awk (oder perl) für komplexere Übereinstimmungen reservieren.
ChuckCottrill
@StephaneChazelas Vielen Dank für die (charakteristische) Einsicht :)
Joseph R.
5
awk '{print $1}' file

oder

sed 's/ .*//'
jlliagre
quelle
1

Und der eine durch perl,

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

Durch GNU grep,

$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
Avinash Raj
quelle