[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