ฉันต้องการเปลี่ยนไฟล์ด้วยชื่อเช่น:
d1-a2_A1_B1.txt
abcd_A90_B2.txt
ที่ฉันต้องการแทรก_FOO
ระหว่างแรก_A[0-9]\+
และ_B[0-9]
เพื่อให้ชื่อไฟล์
d1-a2_A1_FOO_B1.txt
abcd_A90_FOO_B2.txt
แต่การแสดงออกปกติของฉันไม่ทำงาน:
for f in $(ls); do mv $f \`echo $f | sed -e s/\(.*_A[0-9]\+\)\(_B[0-9].*\)/$1_FOO$2/\`; done
ฉันลองด้วยสายเดี่ยว:
echo abcd_A90_B2.txt | sed -e s/\(.*_A[0-9]\+\)\(_B[0-9].*\)/$1_FOO$2/
ตกลง: สิ่งนี้ได้ผล:
echo abcd_A90_B2.txt | sed -e 's/\(_A[0-9]\+\)\(_B[0-9]\)/\1_FOO\2/'
การโพสต์ของคุณจะได้รับการปรับปรุงอย่างมากด้วยการจัดรูปแบบที่ดีขึ้น นี่คือหน้าความช่วยเหลือเกี่ยวกับวิธีการจัดรูปแบบ ฉันจะแก้ไขด้วยตัวเอง แต่มีการแก้ไขอื่นที่ค้างอยู่ดังนั้นฉันจึงไม่สามารถทำได้
—
Tom Zych