Удалить новую строку / символы разрыва строки только для определенных строк - PullRequest
3 голосов
/ 16 февраля 2012

У меня есть следующий вывод:

02:01:31
OFFLINE
02:02:31
ONLINE

, и я бы хотел, чтобы он стал:

02:01:31 OFFLINE
02:02:31 ONLINE

Я нашел способ удаления всех переносов новой строки / переноса строки с помощью sed ':a;N;$!ba;s/\n/ /g'однако это дает мне то, что следует, что на самом деле не то, что я ищу:

02:01:31 OFFLINE 02:02:31 ONLINE

В: Как я могу удалить разрывы новой строки / строки только для строк, которые соответствуют определенному шаблону (в данном случае[0-9] будет достаточно?

PS: Это не должно быть с sed, пока я могу применить шаблон регулярного выражения для сопоставления строк

Ответы [ 2 ]

4 голосов
/ 16 февраля 2012

Сделайте ваш s/\n/ /g равным s/\([0-9]\S*\)\n/\1 /g (цифра, за которой следует любое количество пробелов, за которым следует новая строка).

1 голос
/ 16 февраля 2012

awk oneliner:

awk '/[0-9]$/{printf $0" ";next;}1'

тест:

kent$  echo "02:01:31
OFFLINE
02:02:31
ONLINE"|awk '/[0-9]$/{printf $0" ";next;}1'
02:01:31 OFFLINE
02:02:31 ONLINE
...