Apakah ada cara untuk menjalankan pencarian rekursif percobaan dan mengganti menggunakan sed , sebelum benar-benar menjalankannya? Saya hanya ingin mencetak hasilnya sebelum benar-benar melakukan pencarian dan penggantian. Sesuatu seperti menggemakan hasil,
grep -rl term1 . |xargs sed -i -e 's/term1/term2/'
Jawaban yang Diterima:
Anda dapat menjalankan sed tanpa -i dan melangkah melalui output dengan less
grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less
Kemudian jalankan sed dengan -i.bak untuk membuat cadangan yang dapat Anda ubah setelahnya
grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct
Sunting: Seperti yang disarankan dalam komentar, gunakan grep --null | xargs -0 . Ini menyebabkan nama file diakhiri dengan byte nol, yang membuatnya aman untuk nama file dengan karakter yang tidak biasa seperti baris baru. Ya, n adalah karakter yang valid dalam nama file unix. Satu-satunya karakter terlarang adalah garis miring / dan karakter nul