2010-12-08 41 views

Répondre

3

Vous pouvez utiliser un sous-shell

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

Vous venez de tester votre suggestion. Ça fonctionne bien. C'est pratique à savoir parce que j'ai beaucoup de sorties et que je n'ai pas assez d'espace disque pour les sauvegarder. Bravo – Tony

+0

Vous n'avez pas besoin d'utiliser un sous-shell, utilisez des accolades pour regrouper les commandes dans le shell actuel: '{awk '...'; fichier cat3; }> file4' (le point-virgule et les espaces autour des accolades sont obligatoires) –

0

Je préfère @Peter's answer, mais en fonction de votre shell (bash/zsh/...), vous pouvez utiliser la substitution de processus:

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

Vous pouvez également utiliser simplement Awk:

awk FNR file1 file3> file4 

Cela concenate file1 et file3 et sauvera à file4

+0

D'ailleurs, vous pouvez remplacer 'NFR' par' 1'. Mais c'est juste faire exactement ce que 'cat' fait, sans faire aucun traitement de fichier1. –

0

Vous pouvez le faire sans sous-shell:

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

ou même:

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

Cela causera fichier1 d'être traité par do_stuff et file3 sera transmis directement.