Ich habe ein Verzeichnis mit mehreren .txt
Dateien.
Aus jeder dieser Dateien möchte ich die erste Zeile auswählen und in eine neue .txt
Datei drucken (um eine Liste aller ersten Zeilen zu erhalten).
Ich versuchte es mit dem awk
und sed
Befehlen und kombinierte sie mit einer Schleife, aber ohne Erfolg.
command-line
text-processing
Annemieke Smet
quelle
quelle
Antworten:
Verwendung
head
:-n1
erzählthead
nur die erste Zeile zu extrahieren.-q
weist head an, den Dateinamen nicht zu drucken.quelle
Verwenden von
grep
:grep
Stimmt mit jedem Zeichen überein und wird nach der ersten Übereinstimmung beendet, dh esgrep
werden die ersten Zeilen aller Eingabedateien ausgegeben und diese werden in gespeichertout.txt
.quelle
Verwenden Sie nur Bash:
*.txt
wird auf die Liste der Ordner / Dateien, die mit enden,.txt
im aktuellen Arbeitsverzeichnis erweitert (da es nur Dateien gibt, deren Ordner mit enden).txt
kein Problem darstellen);<"$f" read line
Liest eine Zeile aus dem in gespeicherten Dateipfadf
und speichert sie inline
;printf "$line\n" >>new.txt
: fügt den Inhalt vonline
annew.txt
;quelle
Du hast es mit probiert
awk
, hier ist eineawk
Versionquelle
Ein weiterer Ansatz bei AWK besteht darin, AWK anzuweisen, zu drucken, und dann sofort zur nächsten Datei zu wechseln
sed
Ermöglicht auch das Drucken bestimmter Zeilen. Hier habe ich das mit kombiniertfind
Und perl:
Zuguterletzt ,
grep
Wenn Sie alles in einer einzelnen Datei speichern möchten, müssen Sie nur
> outputFile.txt
die folgenden Befehle anhängen .quelle