Jawaban:
Anda bisa menggunakannya awkuntuk itu.
command | awk '{ if (/pattern/) { print > "match" } else { print > "nomatch" } }'
>mencetak semua output ke file, menimpa file yang ada. Itu tidak dievaluasi sedemikian rupa sehingga akan menghasilkan setiap baris baru menimpa keluaran lama dari contoh yang sama awk. Artinya, jika ada beberapa kecocokan, file "kecocokan" akan berisi setiap kecocokan yang dipisahkan oleh OFS. Perbedaan antara >dan >>ada dalam perawatan file yang ada.
Berikut adalah sedcontohnya:
Catatan: wperintah sed akan menimpa file yang ada setiap kali skrip dijalankan, tetapi hanya jika perintah tulis tertentu dipicu; karenanyarm
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
Anda dapat menambahkan file dalam awk:
awk '{if (/pattern/) print >>"matched"; else print >>"unmatched"; }
atau lebih pendek:
awk '{print >>(/pattern/?"matched":"unmatched")}'
awktetapi pada titik apakah itu mengevaluasi>? Jika dievaluasi setiap kali persyaratan berlaku, Anda akan mendapatkan dua file satu-baris ...