Страницы

Поиск по вопросам

четверг, 29 ноября 2018 г.

Как использовать перенос строки в левой части sed?

Отслеживаю логи через tailf (tail -f). Для удобства отображения хотелось бы после каждой строки добавлять пустую строку.
Например:
$ tailf /var/log/some.log log1 log2 log3
$ tailf /var/log/some.log | magic log1
log2
log3
Пробовал через sed двумя способами, но получаю то же без изменений. Идея в том, чтобы поматчить перенос строки и заменить его на два переноса. Общий синтаксис такой: sed 's/substitute_this/to_this/g'
Способ 1: вставить перенос строки как $'
'
$ tailf /var/log/some.log | sed "s/$'
'/test/g" log1 log2 log3
Похоже, что $'
' не матчится на переносы строк в моем логе.
Способ 2: вставить перенос строку как перенос строки при вводе команды:
$ tailf /var/log/some.log | sed "s/ > /test/g" sed: -e expression #1, char 2: unterminated `s' command
$ tailf /var/log/some.log | sed "s/\ /test/g" sed: -e expression #1, char 0: no previous regular expression
Если бы это был shell-скрипт, можно было бы использовать хак
newline=' '
Но я-то хочу "на ходу" использовать. Сделать фукцию или alias тоже не подойдёт, т.к. я работаю с большим количеством хостов и не имею возможности индивидуально настраивать .bashrc
Собственно, вопрос: что должно быть на месте magic?


Ответ

Еще вариант с sed:
tailf foo.log
init.lxc 1455930731.917 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy init.lxc 1455930758.674 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy init.lxc 1455986152.381 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy init.lxc 1455986234.349 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy
tailf foo.log | sed 'a\ '
init.lxc 1455930731.917 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy
init.lxc 1455930758.674 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy
init.lxc 1455986152.381 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy
init.lxc 1455986234.349 ERROR lxc_initutils - initutils.c:mount_fs:36 - failed to mount /proc : Device or resource busy

Комментариев нет:

Отправить комментарий