如何使用sed / awk / grep ...从文件中提取块,每个块将其保存到文件中

时间:2013-08-23 02:36:25

标签: regex bash shell sed awk

大家好日子,

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

我的第一个方法是

sed -n“/ PATTERN /,/ PATTERN / p”file.log

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

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

非常感谢您提供任何帮助。

`
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.

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.

`

2 个答案:

答案 0 :(得分:2)

此代码应创建名为resultNUM的文件,其中NUM是块的编号

awk '/PATTERN/{close("result"f);f++}{print $0 > "result"f}' file.log

答案 1 :(得分:0)

这可能对您有用:

csplit -z file '/PATTERN/' '{*}'