在每一行之间添加额外的换行符

时间:2014-02-05 07:47:17

标签: linux sed grep tr less-unix

我正在分析来自我服务器的日志文件(特别是那里的几行)。但这些行的长度大约为1000到2000个字符。

以下示例说明如何使用grepless以及以下命令显示这些行。

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

它也不适用于我。我在这里缺少什么?

4 个答案:

答案 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;}'