Solusi lain mencampur sintaks regex. Untuk menggunakan perl / pola PCRE untuk kedua pencarian dan mengganti, dan hanya file proses pencocokan, karya ini cukup baik:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
di mana match1dan match2biasanya identik tetapi match1dapat disederhanakan untuk menghapus fitur yang lebih canggih yang hanya relevan dengan substitusi, misalnya menangkap grup.
Terjemahan: grepsecara rekursif dan daftar file yang cocok dengan pola PCRE ini, dipisahkan oleh nul untuk melindungi karakter khusus apa pun dalam namafile, lalu pipa nama file xargsyang mengharapkan daftar yang dipisahkan nul, tetapi tidak akan melakukan apa pun jika tidak ada nama yang diterima, dan perluntuk mengganti garis tempat pertandingan ditemukan.
Tambahkan Isakelar grepuntuk mengabaikan file biner. Untuk case-sensitive matching, drop iberalih dari grep, dan ibendera yang melekat pada ekspresi substitusi, tetapi tidak dengan imengaktifkan perlitu sendiri.