Tentu saja, sed dan awk dapat melakukan ini, tetapi saya mengalami sedikit kesulitan memahami dengan tepat apa pertanyaan Anda. Apa yang sebenarnya menyebabkan Anda kesulitan? Memasukkan baris baru? Menggantinya?
frabjous
Jawaban:
19
Sed cukup buruk dalam hal ini, karena beroperasi satu baris pada satu waktu. Satu-satunya teknik yang layak yang pernah saya lihat untuk melakukan ini adalah ini , yang melibatkan menyimpan seluruh file dalam buffer hold sed dan kemudian mengoperasikannya sekaligus:
sed -n '1h;1!H;${g;s/search/replace/;p;}'
Jika Anda bisa, lebih mudah menggunakan perl untuk mencapai ini:
Bisakah Anda jelaskan apa yang diperintahkan oleh perintah baris untuk perl?
Michael
1
@Michael -0mengatur pemisah rekaman ke nol, sehingga seluruh file akan dibaca sekaligus, bukan baris demi baris. -pmembuatnya mencetak hasil setelah penggantian. -ememinta argumen berikutnya untuk diekspresikan, dan s/search/replace/apakah ungkapan itu
Jawaban:
Sed cukup buruk dalam hal ini, karena beroperasi satu baris pada satu waktu. Satu-satunya teknik yang layak yang pernah saya lihat untuk melakukan ini adalah ini , yang melibatkan menyimpan seluruh file dalam buffer hold sed dan kemudian mengoperasikannya sekaligus:
Jika Anda bisa, lebih mudah menggunakan perl untuk mencapai ini:
search
dapat berisi\n
s untuk mewakili baris barusumber
sed
multiliner.-0
mengatur pemisah rekaman ke nol, sehingga seluruh file akan dibaca sekaligus, bukan baris demi baris.-p
membuatnya mencetak hasil setelah penggantian.-e
meminta argumen berikutnya untuk diekspresikan, dans/search/replace/
apakah ungkapan itu