ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [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 15:47     ` Eugene Ostapets
@ 2007-03-27 16:08       ` Slava Dubrovskiy
  0 siblings, 0 replies; 7+ messages in thread
From: Slava Dubrovskiy @ 2007-03-27 16:08 UTC (permalink / raw)
  To: Eugene Ostapets, ALT Linux Community

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

Eugene Ostapets пишет:
>> Никак не влияет. :'(
> #!/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 с переводом строки). Работает так как задумано:)
>
А у меня не работает. В i попадают отдельные слова из строк и 
определяется их длина.

-- 
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

* 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

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