ฉันใช้grepคำสั่งเพื่อค้นหาสตริงในไฟล์จำนวนมาก มีสิ่งที่คล้ายกับ "ค้นหาและแทนที่" หรือไม่
ฉันใช้grepคำสั่งเพื่อค้นหาสตริงในไฟล์จำนวนมาก มีสิ่งที่คล้ายกับ "ค้นหาและแทนที่" หรือไม่
คำตอบ:
คุณกำลังมองหาsedคำสั่ง ตัวอย่างเช่นหากต้องการแทนที่ "dog" ด้วย "cat" ในไฟล์ข้อความทั้งหมดในไดเรกทอรีปัจจุบัน:
sed -i 's/dog/cat/' *.txt
ใจอยู่ในใจ ตัวอย่าง:
sed s/cat/dog/ <input >output
การค้นหาแมวในบรรทัดและวาง dog ไว้ที่ตำแหน่งในอินพุตไฟล์และเขียนลงในไฟล์เอาต์พุต
sedเป็นเครื่องมือที่เหมาะสม แต่คุณสามารถใช้exคำสั่งในvim:
vim -c 'args <files> | argdo %s/cat/dog/g | x'
โดยที่<files>รายการของไฟล์หรือรูปแบบที่คุณต้องการทดแทน
คุณสามารถใช้ Vim ในโหมด Ex:
for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done% เลือกทุกบรรทัด
s แทน
g แทนที่อินสแตนซ์ทั้งหมดในแต่ละบรรทัด
x บันทึกและปิด