ฉันใช้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
บันทึกและปิด