Risposte:
Potresti usare awkper quello.
command | awk '{ if (/pattern/) { print > "match" } else { print > "nomatch" } }'
>stampa tutto l'output sul file, sovrascrivendo i file esistenti. Non viene valutato in modo tale da generare nuove righe che sovrascrivono l'output precedente dalla stessa istanza di awk. Cioè, se ci sono più corrispondenze, il file "corrispondenza" conterrà ogni corrispondenza separata da OFS. La differenza tra >ed >>esiste nel trattamento dei file esistenti.
Ecco un sedesempio:
Nota: il wcomando sed sed sovrascriverà un file esistente ogni volta che viene eseguito lo script, ma solo se viene attivato quel particolare comando write; quindi ilrm
rm -f file-{yes,not}
sed -ne '/pattern/bY; w file-not' -e 'b; :Y; w file-yes' file
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
Puoi aggiungere file in awk:
awk '{if (/pattern/) print >>"matched"; else print >>"unmatched"; }
o più corto:
awk '{print >>(/pattern/?"matched":"unmatched")}'
awkma a che punto valuta>? Se viene valutato ogni volta che si applica il condizionale,