Как добавить пустую строку, если grep сообщает о нескольких экземплярах одного и того же шаблона? - PullRequest
0 голосов
/ 27 августа 2018

Ubuntu 16.04
Баш 4.4.0

Я использую grep для поиска слова «ошибка» в файле json, который является лог-файлом. Как можно добавить пустую строку после каждого экземпляра?

Моя команда: grep error "${wDir}"/"${client}"/logs/server.json >> "$eLog"

вывод:

{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponse":{"error":{"message":"(#200) User does not ....."}}}
{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponseraw":{"error":{"message":"(#200) User does not ..."}}}
{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponse":{"error":{"message":"(#200) User does not ....."}}}
{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponseraw":{"error":{"message":"(#200) User does not ..."}}}

Желаемый вывод:

{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponse":{"error":{"message":"(#200) User does not ....."}}}

{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponseraw":{"error":{"message":"(#200) User does not ..."}}}

{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponse":{"error":{"message":"(#200) User does not ....."}}}

{"name":"XXX_XXX","hostname":"xxx.xx.xxx","pid":5193,"level":30,"fbresponseraw":{"error":{"message":"(#200) User does not ..."}}}

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Простое - это хорошо.

sed '/error/G' "${wDir}"/"${client}"/logs/server.json >> "$eLog"

или, если вы хотите, чтобы он был без учета регистра

sed '/error/IG' "${wDir}"/"${client}"/logs/server.json >> "$eLog"

Примеры:

$: cat x
a
error
b
c
foo error other stuff
d
e
foo other stuff ERROR ERROR
f
g

$: sed '/error/G' x
a
error

b
c
foo error other stuff

d
e
foo other stuff ERROR ERROR
f
g

$: sed '/error/IG' x
a
error

b
c
foo error other stuff

d
e
foo other stuff ERROR ERROR

f
g
0 голосов
/ 09 сентября 2018

С grep:

grep "aa" a.txt | xargs printf "%s\n\n"

Выход:

aa

aa

aa

aa
0 голосов
/ 27 августа 2018

Вы можете использовать awk для поиска и вставить пустую строку:

awk '/error/ { print $0 ORS }' "${wDir}"/"${client}"/logs/server.json

По умолчанию ORS (разделитель выходных записей) равен \n.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...