我正在分析来自服务器的日志文件(特别是其中的几行)。但这些行的长度约为 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
它对我来说也不起作用。我在这里缺少什么?
这可能对你有用:
sed G file
这将搜索
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
你可以试试这个
sed
,
sed '/SOME_TEXT/s/.*/&\n/g' logfile.log
或者
sed '/SOME_TEXT/G' logfile.log
tail -n 1000 log.log | sed -n '/SOME_TEXT/ {G;p;}'
使用保持缓冲区
u 也可以将线编号为分隔线
tail -n 1000 log.log | sed -n '/SOME_TEXT/ {=;p;}'
这对我有用:
cat 文件 | sed -e 的/$/ /'
基本上,使用sed来添加 一行的每一端 ($)。 您也可以这样做,但换行符会添加在每行之前:
cat 文件 | sed -e 的/^/ /'
基本上,使用sed来添加 对于一行的每个开头 (^)。
Sed 也接受文件作为输入,所以
sed -e 的/$/ /' 文件 # 也会做同样的事情