Я хотел бы изменить файл с именем, например:
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/'