2010-12-08 3 views

Antwort

3

Sie eine Subshell

(awk '...{print}' file1; cat file3) > file4 
+0

Nur Ihren Vorschlag getestet. Es funktioniert gut. Es ist praktisch, dies zu wissen, da ich eine große Menge an Ausgaben habe und nicht genügend Speicherplatz habe, um sie zu speichern. Prost – Tony

+0

Sie müssen keine Subshell verwenden, verwenden Sie geschweifte Klammern, um die Befehle in der aktuellen Shell zu gruppieren: '{awk '...'; Katzendatei3; }> file4' (das abschließende Semikolon und die Leerzeichen um die geschweiften Klammern sind erforderlich) –

0

bevorzugen @Peter's answer, aber abhängig von der Shell (bash/zsh/...) verwenden, könnte ich, könnten Sie Prozess Substitution verwenden:

cat <(awk ...) file3 > file4 
0

Sie können auch nur awk verwenden:

awk FNR file1 file3> file4 

Dies wird concenate file1 und file3 und wird es file4

+0

In diesem Fall könnten Sie 'NFR' durch' 1' ersetzen. Aber es macht genau das, was "cat" tut, ohne irgendeine Verarbeitung von file1. –

0

Sie es ohne Subshell tun speichern:

awk '...{print}' file1 | cat - file3 > file4 

oder sogar:

awk 'FNR!=NR {print;next} ... {do_stuff}' file1 file3 > file4 

Das file1 verursachen verarbeitet von do_stuff und Datei3 wird direkt durchgereicht werden.

Verwandte Themen