简体   繁体   English

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

[英]How to use sed / awk / grep … to extract blocks from a file and each block save it into a file

Good day to all, 祝大家好日子

In this opportunity, I'm trying to find a bash code that allow me to extract text blocks between the same pattern and each block save to a different file. 在这个机会中,我试图找到一个bash代码,允许我在同一模式和每个块之间提取文本块保存到不同的文件。

My first approach is : 我的第一个方法是

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

{...and yes, into the log file, the pattern that delimit each block is the same} {...和是,在日志文件中,分隔每个块的模式是相同的}

But it only print all blocks in one stream... I want to save each block into a file. 但它只打印一个流中的所有块...我想将每个块保存到一个文件中。 But, I don't know how to make a stop in each block, save it and continue with the following block. 但是,我不知道如何在每个块中停止,保存并继续下面的块。

Thanks so much in advance for any help. 非常感谢您的帮助。

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

` `

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

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

这可能对你有用:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM