2016-05-10 3 views
1

Also habe ich einen Befehl, der Informationen aus einer Nicht-Text-Datei in eine Textdatei ausgibt und ich möchte für jede Schleife eine wie 10 dieser Dateien machen. So etwas wie,Wie foreach Schleife mit Sed auf Textdateien kombinieren?

print_h3_header 2034.h3 > 2034_header.txt 

Dann möchte ich bestimmte Zeilen aus der Textdatei extrahieren. Etwas wie,

sed '7929p;7936p;7937q;d' 2034_header.txt > 2034_extracted.txt 

Gibt es eine Möglichkeit, ich kann das alles in 1 riesigen Schritt tun?

Antwort

2

Wenn ich Ihre Frage richtig verstanden habe, alles was Sie brauchen, ist

print_h3_header 2034.h3 | sed '7929p;7936p;7937q;d' > 2034_extracted.txt 
+0

aber ich habe 10 andere Dateien, die ich tun möchte, dies mit. Wie mache ich das im Kontext einer foreach-Schleife? – e1v1s

+0

Dafür, siehe Karakfas Antwort. –

1

Sie das gleiche mit .h3 Erweiterung für alle Dateien tun

for f in *.h3; 
do 
    print_h3_header "$f" | sed '...' > ${f%.*}_extracted.txt; 
done 
+0

Wofür steht f? – e1v1s

+0

Es ist der Schleifen-Iterator, der den Dateinamen aus der Glob-Erweiterung von '* .hs' entspricht. – karakfa