sed и "левые символы"

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Fangelion
Сообщения: 112
ОС: Debian GNU/Linux

sed и "левые символы"

Сообщение Fangelion »

Доброго времени суток!
Прошу помощи в проблеме. Есть скрипт на баше в котором участвует sed с регэкспом:

Код: Выделить всё

#!/bin/bash
for i in *
do
#mv "$i" "$(echo "$i"|sed "s/(\([0-9]\+\).\([0-9]\+\))/(\1x\1)/)"
done

И есть файлы с названиями:

Код: Выделить всё

bla-bla (176x204).jar
bls-bls (176�204).jar

Файлы в которые соответствуют первому варианту обрабатываются нормально, а файлы, которые соответствуют второму варианту игнорируются. Пробовал даже такой вариант sed "s/(\([0-9]\+\).\+\([0-9]\+\))/(\1x\1)/). Результат такой же.
В чем проблема и какие пути решения?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: sed и "левые символы"

Сообщение /dev/random »

Когда sed сталкивается с последовательностью байтов, некорректной в текущей кодировке, он прекращает работу. Единственный способ этого избежать - сделать текущей (для sed'а) такую кодировку, в которой любая последовательность байтов хоть что-то, да обозначает. Например так:
LC_ALL=C sed "s/...
Спасибо сказали: