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