Intereting Posts
Перенаправление трафика, поступающего из туннеля SSH в туннель VPN на устройстве Linux Проблема с драйвером skystar hd2 Почему размер пустого каталога в Linux составляет 4 КБ? `eval` работает на Ubuntu, но не работает на Debian и Kali Медленная распечатка терминала Транспонирование нескольких столбцов – это строка Как я могу регистрировать исходящий трафик TCP, включая полный путь к URL-адресам? Условно убивая процесс, основанный на его выходе Вопрос о замене символа в текстовом файле Убивание предыдущих экземпляров скрипта перед запуском того же сценария Unix MySQL и PHP (и другие языки) Получение дополнительной информации GPT; эквивалент "fdisk -l" Правильный способ добавления одного и того же принтера дважды с теми же настройками по умолчанию: Evince не соблюдает эти настройки Как я могу поставить в очередь весь каталог для FTP? низкий уровень громкости звука ALSA

Добавьте возврат каретки к выходу `tail` при использовании` grep`

Я хочу реорганизовать следующую команду:

tail -f production.log | grep -e "Processing " -e "compatible;" -e "Completed in " -e 

Это результат команды:

Обработка BasketController # cross_sell_product (для 85.189.237.x в 2011-08-03 12:46:07) [POST] «RequestLog», «2011-08-03 12:46:07», «12595», «www. «com.com», «/ basket / cross_sell_product / 113», «85.189.237.x», «Mozilla / 5.0 (совместимо, MSIE 9.0, Windows NT 6.1, WOW64; Trident / 5.0)» Завершено в 0.07853 (12 запросов / сек) | Рендеринг: 0,01402 (17%) | DB: 0,01439 (18%) | 200 OK [https://www.website.com/basket/cross_sell_product/113]

Это здорово, и именно то, что я хочу, однако, я бы хотел увидеть, это возврат на картер или два после этого, чтобы я мог изучать журналы как блоки.

Я пытался добавить \n до конца, но это не сработало.

Я не уверен, что вы хотите, но awk, возможно, сделает это легко. Чтобы добавить дополнительную строку новой строки после каждой соответствующей строки:

 tail -f production.log | awk '/Processing|compatible;|Completed in / {print; print ""}' 

Чтобы добавить новую строку между всеми блоками несвязанных совпадающих строк:

 tail -f production.log | awk ' /Processing|compatible;|Completed in / { if (NR == n+1) print ""; n = NR; print; }' 

grep будет отфильтровывать пустые строки, поскольку они не соответствуют ни одному шаблону. В случае, если в исходном файле появляются разделители пустой строки, вы можете их пропустить, добавив -e "^$" .

Если эти пустые строки не присутствуют в исходном файле, вам придется их добавлять. Это пример того, как это сделать:

  tail -f production.log | grep -e … | sed 's/\(^Processing \)/\n\1/' 

Edit: если вы хотите, чтобы пустая строка после каждой строки использовала sed 's/$/\n/' . И, конечно, вы можете добавить столько \n сколько хотите.