Ich habe eine Datei, die viele Zeilen enthält, und ich möchte nur das erste Word jeder Zeile mit den Linux-Befehlen anzeigen.
Wie kann ich das machen?
Versuchen Sie dies mit grep :
grep -Eo '^[^ ]+' file
Sie können awk
verwenden:
awk '{print $1}' your_file
Dadurch wird die erste Spalte ($1
) in your_file
"gedruckt".
versuchen Sie dies mit coreutils cut
:
cut -d' ' -f1 file
Ich sehe da schon Antworten. Sie können dies aber auch mit sed tun:
sed 's/ .*//' fileName
Die oben genannten Lösungen scheinen in Ihren speziellen Fall zu passen. Beachten Sie für eine allgemeinere Anwendung Ihrer Frage, dass Wörter im Allgemeinen so definiert sind, dass sie durch Leerzeichen getrennt werden, jedoch nicht unbedingt Leerzeichen. Spalten in Ihrer Datei können beispielsweise tabulatorgetrennt sein oder sogar durch eine Mischung aus Tabulatoren und Leerzeichen getrennt sein.
Die vorherigen Beispiele sind alle nützlich, um durch Leerzeichen getrennte Wörter zu finden, während nur das awk-Beispiel auch Wörter findet, die durch andere Leerzeichen getrennt sind (und tatsächlich stellt sich heraus, dass dies in verschiedenen sed/grep-Versionen ziemlich schwierig ist). Sie können auch leere Zeilen explizit überspringen, indem Sie die awk-Anweisung folgendermaßen ändern:
awk '{if ($1 !="") print $1}' your_file
Wenn Sie auch besorgt sind über die Möglichkeit von leeren Feldern , d. H. Zeilen, die mit Leerzeichen beginnen , dann ist eine robustere Lösung in Ordnung. Ich bin mit awk nicht geschickt genug, um einen Einzeiler für solche Fälle zu erstellen, aber ein kurzes Python-Skript, das den Trick macht, könnte wie folgt aussehen:
>>> import re
>>> for line in open('your_file'):
... words = re.split(r'\s', line)
... if words and words[0]:
... print words[0]
... oder unter Windows (falls Sie GnuWin32 grep haben):
grep -Eo "^[^ ]+" file