Указание требования: заменить специальный символ (é-> e, î-> i) только внутри токенов src = "...".
Предполагается, что файлы XML отформатированы разумно (более конкретно,полный тег IMG находится в одной строке), можно добиться, заменив каждый из специальных символов с помощью команды 's'.
First line é->e, second line î->i
sed -e 's,src="\([^"]*\)é\([^"]*"\),src=\1e\2,g' \
-e 's,src="\([^"]*\)î\([^"]*"\),src=\1i\2,g'
Приведенное выше решение не будет обрабатывать src, который имеет одни и те же специальные символы более одного раза,(Например, src- "xîzîtîFi.png". Если это проблема, и предполагается, что в приведенном ниже примере принимается небольшое количество повторов 92, то
# é->e
sed -e 's,src="\([^"]*\)é\([^"]*"\),src="\1e\2,g' \
-e 's,src="\([^"]*\)é\([^"]*"\),src="\1e\2,g' \
-e 's,src="\([^"]*\)é\([^"]*"\),src="\1e\2,g' \
-e 's,src="\([^"]*\)î\([^"]*"\),src="\1i\2,g' \
-e 's,src="\([^"]*\)î\([^"]*"\),src="\1i\2,g' \
-e 's,src="\([^"]*\)î\([^"]*"\),src="\1i\2,g'
Я уверен, что есть возможностьиспользование меток / ветви для выполнения вышеуказанной замены более выгодно для обработки неограниченного количества специальных символов.
Переименование файлов Другой вопрос может использовать команду «sed» Transliterate. Что-то вроде:
for file in FILELIST ; do
new_name=$(echo $file | sed -e 'y/éî/ei/')
if [ "$file" != "$new_name] ; then
mv $file $new_name
if
done