Str*_*gos 3 sed awk text-processing
我有一个包含多个日志的串联日志文件,我试图将其解析为单个日志文件。我稍后会将它们重命名为每个的日期/时间。每个日志以“--- LOG REPORT ---”分隔。
到目前为止,我有:
sed -n '/--- LOG REPORT ---/,/--- LOG REPORT ---/p' logname.log > test.out
Run Code Online (Sandbox Code Playgroud)
但是,您可以想象,这仅输出模式的第一个实例。我查看了 sed 的手册页,但我不相信它可以输出多个文件。也许我可以继续从文件中提取直到它为空,但这似乎工作量太大。我怎么能做到这一点?也许我应该改用 awk ?
输入文件 filename.log 的示例
--- LOG REPORT ---
Mary
Had
A
Little
Lamb
--- LOG REPORT ---
Her
Fleece
Was
White
As
Snow
Run Code Online (Sandbox Code Playgroud)
期望的输出:
在 filename_1.log 中
--- LOG REPORT ---
Mary
Had
A
Little
Lamb
Run Code Online (Sandbox Code Playgroud)
在 filename_2.log 中
--- LOG REPORT ---
Her
Fleece
Was
White
As
Snow
Run Code Online (Sandbox Code Playgroud)
这个命令怎么样?
csplit logname.log /---\ LOG\ REPORT\ ---/ {*}
Run Code Online (Sandbox Code Playgroud)
测试
cat logname.log
--- LOG REPORT ---
Mary
Had
A
Little
Lamb
--- LOG REPORT ---
Her
Fleece
Was
White
As
Snow
Run Code Online (Sandbox Code Playgroud)
运行上述命令后,我得到的输出是,
cat xx01
--- LOG REPORT ---
Mary
Had
A
Little
Lamb
cat xx02
--- LOG REPORT ---
Her
Fleece
Was
White
As
Snow
Run Code Online (Sandbox Code Playgroud)
怎么样的东西
awk '/--- LOG REPORT ---/ {n++;next} {print > "test"n".out"}' logname.log
Run Code Online (Sandbox Code Playgroud)