GNU/Linux >> Belajar Linux >  >> Linux

Uji Pencarian Dan Ganti Sed Rekursif Sebelum Menjalankan?

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

Linux
  1. Baris perintah:cari dan ganti di semua nama file yang cocok dengan grep

  2. Menggunakan grep dan sed untuk mencari dan mengganti string

  3. Temukan dan ganti dengan sed di direktori dan sub direktori

  1. Menggunakan sed untuk menemukan dan mengganti file teks di Linux

  2. Potong / Grep Dan Df -h?

  3. temukan teks yang cocok dan ganti baris berikutnya

  1. Bagaimana cara menguji port mana yang dijalankan MySQL dan apakah itu dapat dihubungkan?

  2. Daftar nama file berdasarkan pola nama file dan konten file?

  3. Pencarian dan penggantian rekursif dalam file teks di Mac dan Linux