我正在尝试从日志文件中提取数据并系统地组织它。我有大约 9 个日志文件,每个文件大小约为 100mb。
我想做的是:从每个日志文件中提取多个 block ,对于提取的每个 block ,我想创建一个新文件并将提取的数据保存到其中。每个 block 都有明确的起点和终点。
基本上,我已经取得了一些进展,并且能够提取我需要的数据,但是,我在尝试弄清楚如何为每个匹配的 block 创建新文件时遇到了困难。
由于环境的限制,我无法使用 Python 或 Perl 等编程语言。所以请原谅困惑的命令。
到目前为止我的命令:
find Logs\ 13Sept/Log_00000000*.log -type f -exec \
sed -n '/LRE Starting chunk/,/LRE Ending chunk/p' {} \; | \
grep -v -A1 -B1 "Starting chunk" > Logs\ 13Sept/Chunks/test.txt
LRE 起始 block
和 LRE 结束 block
是我的边界。现在我的命令可以工作,但它将所有匹配的 block 保存到一个文件中(其大小变得过大)。
如何为每场比赛创建一个新文件并向其中添加匹配的内容?请记住,每个文件可以容纳多个 block ,并且不限于每个文件一个 block 。
最佳答案
可能需要比 sed 更可编程的东西:我假设 awk 可用。
awk '
/LRE Ending chunk/ {printing = 0}
printing {print > "chunk" n ".txt"}
/LRE Starting chunk/ {printing = 1; n++}
' *.log
关于sed - Grep 数据并输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7426769/