ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] конвертировать из cp1251 в koi8-r
@ 2005-03-29 12:41 Grigory Fateyev
  2005-03-29 13:01 ` Nick S. Grechukh
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Grigory Fateyev @ 2005-03-29 12:41 UTC (permalink / raw)
  To: community

Здравствуйте!

Надо конвертировать группу файлов из cp1251 в koi8-r, вот нашкрябал но
не работает.

find -type f -name "*.txt" -exec bash -c 'old="{}"; iconv -c -f
cp1251 -t koi8-r | new=`cat /dev/null > $old`; mv "$old" "$new"' \;

Где ошибка?

Спасибо!
-- 
Всего наилучшего!
greg_[at]_anastasia_[dot]_ru Григорий.



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] конвертировать из cp1251 в koi8-r
  2005-03-29 12:41 [Comm] конвертировать из cp1251 в koi8-r Grigory Fateyev
@ 2005-03-29 13:01 ` Nick S. Grechukh
  2005-03-29 14:26   ` Grigory Fateyev
  2005-03-29 13:27 ` Andrey Rahmatullin
  2005-03-30 11:30 ` Sergey Shilov
  2 siblings, 1 reply; 7+ messages in thread
From: Nick S. Grechukh @ 2005-03-29 13:01 UTC (permalink / raw)
  To: community

On Tue, Mar 29, 2005 at 04:41:41PM +0400, Grigory Fateyev wrote:
> Надо конвертировать группу файлов из cp1251 в koi8-r, вот нашкрябал но
> не работает.
> find -type f -name "*.txt" -exec bash -c 'old="{}"; iconv -c -f
> cp1251 -t koi8-r | new=`cat /dev/null > $old`; mv "$old" "$new"' \;
> Где ошибка?
везде ;-)

ставим команды по порядку и смотрим

old="{}"; 
iconv -c -f cp1251 -t koi8-r | new=`cat /dev/null > $old`; 
что именно iconv должен конвертировать по замыслу? на входе ничего нет.
хорошо, old мы очистили, но что при этом должно попасть в
new? очевидно вывод команды cat /dev/null > $old. а в нем ничего нет.

mv "$old" "$new"
при таком написании в new должно быть некое имя файла. 
кстати, зачем? Вы ведь только что очистили old, cat'нув в него /dev/null. 


зы. как минимум cat "$old" | iconv -c -f cp1251 -t koi8-r 
(куда оно пойдет вопрос отдельный)

попробуйте для начала на естественном языке описать, как оно должно
работать.



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] конвертировать из cp1251 в koi8-r
  2005-03-29 12:41 [Comm] конвертировать из cp1251 в koi8-r Grigory Fateyev
  2005-03-29 13:01 ` Nick S. Grechukh
@ 2005-03-29 13:27 ` Andrey Rahmatullin
  2005-03-30 11:30 ` Sergey Shilov
  2 siblings, 0 replies; 7+ messages in thread
From: Andrey Rahmatullin @ 2005-03-29 13:27 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 433 bytes --]

On Tue, Mar 29, 2005 at 04:41:41PM +0400, Grigory Fateyev wrote:
> Надо конвертировать группу файлов из cp1251 в koi8-r, вот нашкрябал но
> не работает.
apt-get install convmv

-- 
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):

> Забирайте [пакет из obsolete]
Спасибо. Больше ни у кого не будет возражений против проведения
эксгумации с последующей гальванизацией и реанимацией?
		-- mutabor in devel@

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] конвертировать из cp1251 в koi8-r
  2005-03-29 13:01 ` Nick S. Grechukh
@ 2005-03-29 14:26   ` Grigory Fateyev
  2005-03-30  8:13     ` Nick S. Grechukh
  0 siblings, 1 reply; 7+ messages in thread
From: Grigory Fateyev @ 2005-03-29 14:26 UTC (permalink / raw)
  To: community

Hello, Nick!
29 Марта 2005г. в 16:01 You wrote:

> > Где ошибка?
> везде ;-)
> 
> ставим команды по порядку и смотрим
> 
> old="{}"; 
> iconv -c -f cp1251 -t koi8-r | new=`cat /dev/null > $old`; 
> что именно iconv должен конвертировать по замыслу? на входе ничего
> нет. хорошо, old мы очистили, но что при этом должно попасть в
> new? очевидно вывод команды cat /dev/null > $old. а в нем ничего нет.
> 
> mv "$old" "$new"
> при таком написании в new должно быть некое имя файла. 
> кстати, зачем? Вы ведь только что очистили old, cat'нув в него
> /dev/null. 
> 
> 
> зы. как минимум cat "$old" | iconv -c -f cp1251 -t koi8-r 
> (куда оно пойдет вопрос отдельный)
> 
> попробуйте для начала на естественном языке описать, как оно должно
> работать.
 
1. "Катим" выбранный файл по маске;
2. Перекодируем вывод п.1;
3. Записываем вывод в $new;
4. $new свою очередь обнуляет $old;

find -type f -name "*.txt" -exec bash -c 'old="{}"; cat $old |
iconv -c -f cp1251 -t koi8-r -o new=`cat /dev/null > $old` \;

Вроде должно работать? :)

-- 
Всего наилучшего!
greg_[at]_anastasia_[dot]_ru Григорий.



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] конвертировать из cp1251 в koi8-r
  2005-03-29 14:26   ` Grigory Fateyev
@ 2005-03-30  8:13     ` Nick S. Grechukh
  0 siblings, 0 replies; 7+ messages in thread
From: Nick S. Grechukh @ 2005-03-30  8:13 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 1577 bytes --]

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=".

> Вроде должно работать? :)
не-а. не должно ;-)

[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] конвертировать из cp1251 в koi8-r
  2005-03-30 11:30 ` Sergey Shilov
@ 2005-03-30  8:39   ` Nick S. Grechukh
  0 siblings, 0 replies; 7+ messages in thread
From: Nick S. Grechukh @ 2005-03-30  8:39 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 296 bytes --]

On Wednesday 30 March 2005 14:30, Sergey Shilov wrote:
> Можно попробовать:
> find . -name  "*.txt" -exec echo "iconv -o {}.tmp -f cp1251 -t koi8-r {} &&
> mv -f {}.tmp {}" \; | bash -s
так неинтересно.  у человека был свой вариант, просто неправильно 
реализованный. teach man to fish, в общем.

[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] конвертировать из cp1251 в koi8-r
  2005-03-29 12:41 [Comm] конвертировать из cp1251 в koi8-r Grigory Fateyev
  2005-03-29 13:01 ` Nick S. Grechukh
  2005-03-29 13:27 ` Andrey Rahmatullin
@ 2005-03-30 11:30 ` Sergey Shilov
  2005-03-30  8:39   ` Nick S. Grechukh
  2 siblings, 1 reply; 7+ messages in thread
From: Sergey Shilov @ 2005-03-30 11:30 UTC (permalink / raw)
  To: community

В сообщении от 29 Март 2005 12:41 Grigory Fateyev написал:

> Надо конвертировать группу файлов из cp1251 в koi8-r, 
Можно попробовать:
find . -name  "*.txt" -exec echo "iconv -o {}.tmp -f cp1251 -t koi8-r {} && mv -f {}.tmp {}" \; | bash -s

> вот нашкрябал но не работает.
> 
> find -type f -name "*.txt" -exec bash -c 'old="{}"; iconv -c -f
> cp1251 -t koi8-r | new=`cat /dev/null > $old`; mv "$old" "$new"' \;
> 
> Где ошибка?
Возьму на себя смелость порекомендовать для прочтения шедевр
http://www.rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html
Снимает массу вопросов.

-- 
С уважением
Сергей Шилов


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-03-30 11:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-29 12:41 [Comm] конвертировать из cp1251 в koi8-r Grigory Fateyev
2005-03-29 13:01 ` Nick S. Grechukh
2005-03-29 14:26   ` Grigory Fateyev
2005-03-30  8:13     ` Nick S. Grechukh
2005-03-29 13:27 ` Andrey Rahmatullin
2005-03-30 11:30 ` Sergey Shilov
2005-03-30  8:39   ` Nick S. Grechukh

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git