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

问题描述 投票:0回答:5

我正在分析来自服务器的日志文件(特别是其中的几行)。但这些行的长度约为 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

它对我来说也不起作用。我在这里缺少什么?

linux sed grep tr less-unix
5个回答
10
投票

这可能对你有用:

sed G file

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
投票

你可以试试这个

sed

sed '/SOME_TEXT/s/.*/&\n/g' logfile.log

或者

sed '/SOME_TEXT/G' logfile.log

2
投票
tail -n 1000 log.log | sed -n '/SOME_TEXT/ {G;p;}' 

使用保持缓冲区

u 也可以将线编号为分隔线

tail -n 1000 log.log | sed -n '/SOME_TEXT/ {=;p;}'

0
投票

这对我有用:

cat 文件 | sed -e 的/$/ /'

基本上,使用sed来添加 一行的每一端 ($)。 您也可以这样做,但换行符会添加在每行之前:

cat 文件 | sed -e 的/^/ /'

基本上,使用sed来添加 对于一行的每个开头 (^)。

Sed 也接受文件作为输入,所以

sed -e 的/$/ /' 文件 # 也会做同样的事情

© www.soinside.com 2019 - 2024. All rights reserved.