[Comm] конвертировать из cp1251 в koi8-r
Nick S. Grechukh
=?iso-8859-1?q?ngrechukh_=CE=C1_ua=2Efm?=
Ср Мар 30 12:13:59 MSD 2005
On Tuesday 29 March 2005 17:26, Grigory Fateyev wrote:
> 1. "Катим" выбранный файл по маске;
> 2. Перекодируем вывод п.1;
ок.
> 3. Записываем вывод в $new;
в _переменную_ new или файл $new?
чтобы вывод команды засунуть в переменную есть как минимум два варианта:
окружить команду `` (или $(), не суть важно)
new=$(cat .. | iconv ... | some-command)
или в конце:
cat .. | iconv .. | some-command-like-grep | new=`cat`
здесь в переменную new попадет stdout того что в апострофах - cat. а ее вывод
ситуативно совпадает с ее stdin, это же cat. в итоге в переменной окажется то
что вывела вся предыдущая цепочка.
> 4. $new свою очередь обнуляет $old;
что значит обнуляет? видимо, перекодированный текст из переменной new следует
засунуть обратно в файл, имя которого в old.
сделать echo $new > $old не получится, потому что ньюлайны превратятся в
пробелы. нужно делать
cat << EOF > my_new_file
$new
EOF
здесь файл _называется_ my_new_file. если поставить cat << EOF > $my_new_file,
то именем файла будет содержимое переменной my_new_file.
теперь смотрим Ваш вариант
> find -type f -name "*.txt" -exec bash -c 'old="{}"; cat $old |
все ок.
> iconv -c -f cp1251 -t koi8-r -o new=`cat /dev/null > $old` \;
непонятно. ключ -o выводит stdout в файл имя которого идет после ключа.
(кстати, в переменную так не засунешь). в Вашем случае файл будет называться
"new=что-то-там". а это 'что-то там' будет очевидно пустое, потому что
"cat > /dev/null > $old" на stdout ничего не выведет, и new=`...` будет
развернуто в "new=".
> Вроде должно работать? :)
не-а. не должно ;-)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 190 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/community/attachments/20050330/a18f13e8/attachment-0003.bin>
Подробная информация о списке рассылки community