ใครสามารถแนะนำวิธีที่สง่างามเพื่อให้บรรลุนี้
การป้อนข้อมูล:
test instant ()
test instant ()
...
test instant () //total 1000 lines
ผลลัพธ์ควรเป็น:
test instant1 ()
test instant2 ()
test instant1000()
บรรทัดว่างอยู่ในไฟล์อินพุตของฉันและมีไฟล์จำนวนมากภายใต้ไดเรกทอรีเดียวกันที่ฉันต้องดำเนินการในครั้งเดียว
ฉันพยายามทำสิ่งนี้เพื่อแทนที่ไฟล์จำนวนมากใน dir เดียวกันและไม่ทำงาน
for file in ./*; do perl -i -000pe 's/instance$& . ++$n/ge' "$file"; done
ข้อผิดพลาด:
Substitution replacement not terminated at -e line 1.
Substitution replacement not terminated at -e line 1.
และฉันก็ลองทำเช่นนี้:
perl -i -pe 's/instant/$& . ++$n/ge' *.vs
มันทำงานได้ แต่ดัชนีก็เพิ่มขึ้นเรื่อย ๆ จากหนึ่งไปอีกไฟล์หนึ่ง ฉันต้องการตั้งค่าใหม่เป็น 1 เมื่อเปลี่ยนเป็นไฟล์ใหม่ ข้อเสนอแนะที่ดี?
find . -type f -exec perl -pi -e 's/instant/$& . ++$n{$ARGV}/ge' {} +
ใช้งานได้ แต่มันถูกแทนที่ไฟล์อื่น ๆ ทั้งหมดไม่ควรถูกแทนที่ ฉันต้องการแทนที่ไฟล์ด้วย*.txt
เท่านั้น
test instant ()
?