0

祝大家好日子,

在这个机会中,我试图找到一个 bash 代码,它允许我在相同模式之间提取文本块,并将每个块保存到不同的文件中。

我的第一种方法是

sed -n "/PATTERN/,/PATTERN/p" file.log

{...是的,在日志文件中,分隔每个块的模式是相同的}

但它只打印一个流中的所有块......我想将每个块保存到一个文件中。但是,我不知道如何在每个块中停下来,保存它并继续下一个块。

非常感谢您的帮助。

`
图案

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

PATTERN

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

PATTERN

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

`

4

2 回答 2

2

此代码应创建名为resultNUMwhereNUM是块编号的文件

awk '/PATTERN/{close("result"f);f++}{print $0 > "result"f}' file.log
于 2013-08-23T02:53:37.357 回答
0

这可能对您有用:

csplit -z file '/PATTERN/' '{*}'
于 2013-08-23T21:46:28.470 回答