Удаление переноса строки перед определенным символом

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
ferdis
Сообщения: 1

Удаление переноса строки перед определенным символом

Сообщение ferdis »

Доброго всем дня.
Возникла задачка: Удаление переноса строки перед символом (
Есть данные:

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

0 расчет_пришел 12.07.13
32 сбой 13.07.13
(..здесь описание ошибки..)
0 расчет_пришел 14.07.13
0 расчет_пришел 15.07.13


Вот хотелось бы чтоб строка с описанием ошибка оказалась бы с самой ошибкой(предыдущая строка) через пробел:

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

0 расчет_пришел 12.07.13
32 сбой 13.07.13 (..здесь описание ошибки..)
0 расчет_пришел 14.07.13
0 расчет_пришел 15.07.13


Голову ломаю уже второй день, но так ни к чему не пришел. Подскажите, пожалуйста.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: Удаление переноса строки перед определенным символом

Сообщение /dev/random »

sed '/вставьте_шаблон_строки_сбоя/{N;s/\n/ /}'
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Удаление переноса строки перед определенным символом

Сообщение SLEDopit »

moonglow писал(а):
02.08.2013 09:02
Привет!

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

tr -d '\n'
Это удалит вообще все переносы строк. А их нужно удалять при определённом условии.
В ответе /dev/random это условие соблюдается.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
moonglow
Сообщения: 90
ОС: CentOS

Re: Удаление переноса строки перед определенным символом

Сообщение moonglow »

SLEDopit писал(а):
02.08.2013 11:12
moonglow писал(а):
02.08.2013 09:02
Привет!

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

tr -d '\n'
Это удалит вообще все переносы строк. А их нужно удалять при определённом условии.
В ответе /dev/random это условие соблюдается.


если скрипт ТС получает их по одной строке, то tr -d '\n' подходит(предполагается, что ТС сам выберет условие, т.к. не написал его, в т.ч. условие получения входных данных)

ок, вот ++ решение как у /dev/random для vim (просто для разнообразия)

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

:%s/\n(/(/g

так удобно, если много файлов

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

$ vim -Es {имя файла или stdin} <<-EOF
:%s/\n(/(/g
:up
:q
EOF
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Удаление переноса строки перед определенным символом

Сообщение drBatty »

moonglow писал(а):
02.08.2013 11:26
если много файлов

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

sed -i.bak 'sed-скрипт' *.txt
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить