Кто поможет превести текст в такой вид

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Кто поможет превести текст в такой вид

Непрочитанное сообщение ruslanstep1 » 2011-11-27 13:54:11

Нужно Bash скриптом привести вот этот текст
  • УЖ-809132
    УЖ-809132
    00170
    2011-11-26
    01462K211
    1040.00
    5200.00
    кг
    УЖ-809132



    УЖ-809132
    УЖ-809132
    00170
    2011-11-26
    05736K202
    720.00
    14400.00
    шт
    УЖ-809132
к такому
  • УЖ-809132 УЖ-809132 00170 2011-11-26 01462K211 1040.00 5200.00 кг УЖ-809132
    УЖ-809132 УЖ-809132 00170 2011-11-26 05736K202 720.00 14400.00 шт УЖ-809132
Заранее Всем спасибо

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение Bayerische » 2011-11-27 15:51:21

tr "\n" " "

ruslanstep1
мл. сержант
Сообщения: 92
Зарегистрирован: 2010-04-14 11:40:46

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение ruslanstep1 » 2011-11-27 16:01:50

Bayerische писал(а):tr "\n" " "
эта команда переводит все в одну строку
  • УЖ-809132 УЖ-809132 00170 2011-11-26 01462K211 1040.00 5200.00 кг УЖ-809132 УЖ-809132 УЖ-809132 00170 2011-11-26 05736K202 720.00 14400.00 шт УЖ-809132 УЖ-809132 УЖ-809132 00170 2011-11-26 08278K204 216.00 1296.00 кг УЖ-809132 УЖ-809132 УЖ-809132 00170 2011-11-26 02687K201 432.00 2592.00 кг УЖ-809132

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение Bayerische » 2011-11-27 18:31:44

Первым проходом
tr "\n\n" "#"
Вторым проходом
tr "\n" " "
Третьим проходом
tr "#" "\n "

x6e6564
проходил мимо

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение x6e6564 » 2011-11-28 5:16:32

Если пол-во "столбцов" одинаково, то наверно следует использовать xargs

Код: Выделить всё

cat /tmp/1.txt
УЖ-809132
УЖ-809132
00170
2011-11-26
01462K211
1040.00
5200.00
кг
УЖ-809132
cat /tmp/1.txt | xargs -n 9
УЖ-809132 УЖ-809132 00170 2011-11-26 01462K211 1040.00 5200.00 кг УЖ-809132

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение kpp » 2011-11-28 21:08:26

Предлагаю более (как по мне) красивый вариант:

Код: Выделить всё

sed -n '/^..*$/,/^$/{; /^$/!H; /^$/{; x; s/\n/ /g; p; }; ${; x; s/\n/ /g; p; }; }' file.txt
Или более короткий вариант, но тогда нужно соблюсти условие: в конце файла должно быть обязательно два \n

Код: Выделить всё

sed -n '/^..*$/,/^$/{; /^$/!H; /^$/{; x; s/\n/ /g; p; }; }' file.txt
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение Bayerische » 2011-11-29 16:06:12

kpp
Shell FreeBSD не умеет \n. В Линупсе пожалуйста.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Кто поможет превести текст в такой вид

Непрочитанное сообщение kpp » 2011-11-29 16:16:12

2 Bayerische
Этот скрипт тестировал именно на FreeBSD. Или я чего не понял?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.