โซลูชันอื่นผสมไวยากรณ์ของ regex ในการใช้รูปแบบ perl / PCRE สำหรับทั้งการค้นหาและแทนที่และประมวลผลไฟล์ที่ตรงกันเท่านั้นซึ่งทำได้ดี:
grep -rlZPi 'match1' | xargs -0r perl -pi -e 's/match2/replace/gi;'
ที่ไหนmatch1
และmatch2
มักจะเหมือนกัน แต่match1
อาจจะง่ายขึ้นในการลบคุณสมบัติขั้นสูงเพิ่มเติมที่เกี่ยวข้องเฉพาะกับการทดแทนเช่นกลุ่มจับภาพ
การแปล: grep
วนซ้ำและแสดงรายการไฟล์ที่ตรงกับรูปแบบ PCRE นี้คั่นด้วย nul เพื่อป้องกันอักขระพิเศษใด ๆ ในชื่อไฟล์จากนั้นไพพ์ชื่อไฟล์เหล่านั้นxargs
ที่คาดว่าจะมีรายการที่คั่นด้วย nul แต่จะไม่ทำอะไรเลยหากไม่มีชื่อ และperl
ไปที่บรรทัดที่พบการแข่งขันแทน
เพิ่มI
สวิตช์เป็นgrep
เพื่อละเว้นไฟล์ไบนารี สำหรับการจับคู่กรณี ๆ ไปวางi
สลับจากgrep
และi
ธงที่แนบมากับการแสดงออกทดแทน แต่ไม่i
สวิทช์ในperl
ตัวเอง