我正在分析来自我服务器的日志文件(特别是那里的几行)。但这些行的长度大约为1000到2000个字符。
以下示例说明如何使用grep
和less
以及以下命令显示这些行。
tail -n 1000 log.log | grep 'SOME_TEXT' | less
输出:
random text SOME_TEXT another 1000 chars
random SOME_TEXT 2000 chars
text text SOME_TEXT 2000 chars
但是我很难将它们分开,因为那些屏幕上充满了文字(对眼睛也不好看)。我想让我的输出像打击一样:
random text SOME_TEXT another 1000 chars
random SOME_TEXT 2000 chars
text text SOME_TEXT 2000 chars
我已使用sed
修改了我的上述命令:
tail -n 1000 log.log | grep 'SOME_TEXT' | sed 's/\n/\n\n/' | less
它不起作用,所以我尝试了tr
下一步:
tail -n 1000 log.log | grep 'SOME_TEXT' | tr '\n' '\n\n' | less
它也不适用于我。我在这里缺少什么?
答案 0 :(得分:3)
这可能对您有用:
sed G file
答案 1 :(得分:2)
这将搜索pattern
并仅打印pattern
后面有一个额外的空白行。
awk '/SOME_TEXT/ {print $0 RS}' file
示例:
cat file
test
more
SOME_TEXT my data
more
even more
SOME_TEXT need more
more data
yes
awk '/SOME_TEXT/ {print $0 RS}' file
SOME_TEXT my data
SOME_TEXT need more
要打印所有文字,请在pattern
awk '8; /SOME_TEXT/ {print ""}' file
test
more
SOME_TEXT my data
more
even more
SOME_TEXT need more
more data
yes
答案 2 :(得分:2)
您可以尝试此sed
,
sed '/SOME_TEXT/s/.*/&\n/g' logfile.log
或者
sed '/SOME_TEXT/G' logfile.log
答案 3 :(得分:1)
tail -n 1000 log.log | sed -n '/SOME_TEXT/ {G;p;}'
使用保持缓冲区
你也可以将该行编号为分隔
tail -n 1000 log.log | sed -n '/SOME_TEXT/ {=;p;}'