วิธีการ "ค้นหาและแทนที่" ไฟล์จำนวนมาก?


11

ฉันใช้grepคำสั่งเพื่อค้นหาสตริงในไฟล์จำนวนมาก มีสิ่งที่คล้ายกับ "ค้นหาและแทนที่" หรือไม่

คำตอบ:


19

คุณกำลังมองหาsedคำสั่ง ตัวอย่างเช่นหากต้องการแทนที่ "dog" ด้วย "cat" ในไฟล์ข้อความทั้งหมดในไดเรกทอรีปัจจุบัน:

sed -i 's/dog/cat/' *.txt

1
เรียบง่ายและดี
Luis Alvarado

1

ใจอยู่ในใจ ตัวอย่าง:

sed s/cat/dog/ <input >output

การค้นหาแมวในบรรทัดและวาง dog ไว้ที่ตำแหน่งในอินพุตไฟล์และเขียนลงในไฟล์เอาต์พุต


1

sedเป็นเครื่องมือที่เหมาะสม แต่คุณสามารถใช้exคำสั่งในvim:

vim -c 'args <files> | argdo %s/cat/dog/g | x'

โดยที่<files>รายการของไฟล์หรือรูปแบบที่คุณต้องการทดแทน



0

คุณสามารถใช้ Vim ในโหมด Ex:

for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done
  1. % เลือกทุกบรรทัด

  2. s แทน

  3. g แทนที่อินสแตนซ์ทั้งหมดในแต่ละบรรทัด

  4. x บันทึกและปิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.