Ich verwende den folgenden Sed-Befehl, um für jede Datei in einem Ordner eine Zeichenfolge zwischen Mustern zu finden. Die Dateien heißen 01.txt, 02.txt usw.:
sed -n '/PAT1/,/PAT2/{/PAT1/!{/PAT2/!p}}' * >> file
aber die Ausgabe wird nicht nach der gleichen Reihenfolge der Dateien im Verzeichnis sortiert, sondern nach einer anderen Reihenfolge. Ich habe versucht, eine Weiterleitung zum Sortieren durchzuführen, aber die Reihenfolge wird dann auf ALLE Übereinstimmungen/Alle Dateien verteilt, was nicht das ist, wonach ich suche. Ich möchte, dass die Ausgabe in der gleichen Reihenfolge 01.txt, 02.txt angehängt wird. Ich habe gesehen, dass grep dasselbe macht, Übereinstimmungen findet und von einer Datei zur anderen springt. Ich bevorzuge die Verwendung von sed, aber grep ist eine Option. Danke.
Antwort1
Musste auf ein Skript zurückgreifen, immer noch eine Zeile:
for f in file*.txt; do sed -n 'PAT1/,/PAT2/{/PAT1!{/PAT2};}' $f >> outputfile; done