* [Comm] Помогите с форматированием текста
@ 2007-03-27 14:30 Slava Dubrovskiy
2007-03-27 14:47 ` Eugene Ostapets
2007-03-27 20:14 ` Yura Kalinichenko
0 siblings, 2 replies; 7+ messages in thread
From: Slava Dubrovskiy @ 2007-03-27 14:30 UTC (permalink / raw)
To: Community
[-- Attachment #1: Type: text/plain, Size: 877 bytes --]
Здравствуйте.
Помогите со скриптом. В сети есть много скриптов, которые форматируют
текст, разбивая строку на несколько до определённой длины строки.
Подскажите, а как можно вернуть обратно?
Подозреваю что нужно использовать sed, но не могу понять, как ему
сказать, что если длина строки, например 76 символов, то объединить её
с следующей?
И на bash не работает :-(
while [ "$name" != Smith ]; do
read name
long=`echo $name | wc -m`
if [[ $long = "76" ]]; then
name=`echo $name | sed 's/\n//'`
fi
echo "$name"
done <"$1"
--
WBR,
Dubrovskiy Vyacheslav
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 3249 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Помогите с форматированием текста
2007-03-27 14:30 [Comm] Помогите с форматированием текста Slava Dubrovskiy
@ 2007-03-27 14:47 ` Eugene Ostapets
2007-03-27 15:15 ` Slava Dubrovskiy
2007-03-28 5:37 ` Slava Dubrovskiy
2007-03-27 20:14 ` Yura Kalinichenko
1 sibling, 2 replies; 7+ messages in thread
From: Eugene Ostapets @ 2007-03-27 14:47 UTC (permalink / raw)
To: ALT Linux Community
27.03.07, Slava Dubrovskiy<slava tangramltd.com> написал(а):
> Здравствуйте.
> И на bash не работает :-(
> while [ "$name" != Smith ]; do
> read name
> long=`echo $name | wc -m`
> if [[ $long = "76" ]]; then
> name=`echo $name | sed 's/\n//'`
> fi
> echo "$name"
Он выводит два перевода строк? Если один - echo -n $name :)
> done <"$1"
--
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Помогите с форматированием текста
2007-03-27 14:47 ` Eugene Ostapets
@ 2007-03-27 15:15 ` Slava Dubrovskiy
2007-03-27 15:47 ` Eugene Ostapets
2007-03-28 5:37 ` Slava Dubrovskiy
1 sibling, 1 reply; 7+ messages in thread
From: Slava Dubrovskiy @ 2007-03-27 15:15 UTC (permalink / raw)
To: ALT Linux Community
[-- Attachment #1: Type: text/plain, Size: 565 bytes --]
Eugene Ostapets пишет:
> 27.03.07, Slava Dubrovskiy<slava tangramltd.com> написал(а):
>
>> Здравствуйте.
>> И на bash не работает :-(
>> while [ "$name" != Smith ]; do
>> read name
>> long=`echo $name | wc -m`
>> if [[ $long = "76" ]]; then
>> name=`echo $name | sed 's/\n//'`
>> fi
>> echo "$name"
>>
> Он выводит два перевода строк? Если один - echo -n $name :)
>
Никак не влияет. :'(
>> done <"$1"
>>
--
WBR,
Dubrovskiy Vyacheslav
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 3249 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Помогите с форматированием текста
2007-03-27 15:15 ` Slava Dubrovskiy
@ 2007-03-27 15:47 ` Eugene Ostapets
2007-03-27 16:08 ` Slava Dubrovskiy
0 siblings, 1 reply; 7+ messages in thread
From: Eugene Ostapets @ 2007-03-27 15:47 UTC (permalink / raw)
To: slava, ALT Linux Community
27.03.07, Slava Dubrovskiy<slava@tangramltd.com> написал(а):
> Eugene Ostapets пишет:
> > 27.03.07, Slava Dubrovskiy<slava tangramltd.com> написал(а):
> Никак не влияет. :'(
#!/bin/sh
for i in `cat test` ; do
long=`echo $i | wc -m`
if [ $long -eq 10 ] ; then
name=`echo $i | tr -d '\n'`
echo -n "$name"
else
echo "$i"
fi
done
Вот только что написаный скрипт для обработки файл с длиной строк 9
(10 с переводом строки). Работает так как задумано:)
--
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Помогите с форматированием текста
2007-03-27 14:47 ` Eugene Ostapets
2007-03-27 15:15 ` Slava Dubrovskiy
@ 2007-03-28 5:37 ` Slava Dubrovskiy
1 sibling, 0 replies; 7+ messages in thread
From: Slava Dubrovskiy @ 2007-03-28 5:37 UTC (permalink / raw)
To: ALT Linux Community
[-- Attachment #1: Type: text/plain, Size: 928 bytes --]
Eugene Ostapets пишет:
>> Здравствуйте.
>> И на bash не работает :-(
>> while [ "$name" != Smith ]; do
>> read name
>> long=`echo $name | wc -m`
>> if [[ $long = "76" ]]; then
>> name=`echo $name | sed 's/\n//'`
>> fi
>> echo "$name"
>>
> Он выводит два перевода строк? Если один - echo -n $name :)
>
Все разобрался на свежую голову. Ночью я понял что вы имели в виду.
Просто я забыл, что это echo сам переводит строку без -n.
Рабочий вариант выглядит так:
#!/bin/bash
while read line ;do
len=${#line}
if [ "$len" -eq 76 ]; then
echo -n "$line"
else
echo "$line"
fi
done
exit 0
И без всяких td, sed, awk и т.д :-)
Спасибо большое.
--
WBR,
Dubrovskiy Vyacheslav
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/x-pkcs7-signature, Size: 3249 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Помогите с форматированием текста
2007-03-27 14:30 [Comm] Помогите с форматированием текста Slava Dubrovskiy
2007-03-27 14:47 ` Eugene Ostapets
@ 2007-03-27 20:14 ` Yura Kalinichenko
1 sibling, 0 replies; 7+ messages in thread
From: Yura Kalinichenko @ 2007-03-27 20:14 UTC (permalink / raw)
To: ALT Linux Community
Slava Dubrovskiy пишет:
> Здравствуйте.
>
> Помогите со скриптом. В сети есть много скриптов, которые форматируют
> текст, разбивая строку на несколько до определённой длины строки.
> Подскажите, а как можно вернуть обратно?
>
> Подозреваю что нужно использовать sed, но не могу понять, как ему
> сказать, что если длина строки, например 76 символов, то объединить
> её с следующей?
Вы выбрали не совсем подходящий инструмент. В shell-скриптах для таких
целей обычно применяют awk или perl, например:
cat file.ext | awk 'BEGIN {found=0}
{ if (found==1) {
found=0 ;
printf $0
} else {
if (length()==76) {
found=1 ;
printf "%s",$0 ;
} else print $0
}
}
END {if (found==1) printf "\n"}'
--
Yura Kalinichenko
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-03-28 5:37 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-27 14:30 [Comm] Помогите с форматированием текста Slava Dubrovskiy
2007-03-27 14:47 ` Eugene Ostapets
2007-03-27 15:15 ` Slava Dubrovskiy
2007-03-27 15:47 ` Eugene Ostapets
2007-03-27 16:08 ` Slava Dubrovskiy
2007-03-28 5:37 ` Slava Dubrovskiy
2007-03-27 20:14 ` Yura Kalinichenko
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