【问题标题】:How to use sed / awk / grep … to extract blocks from a file and each block save it into a file如何使用 sed / awk / grep ...从文件中提取块并将每个块保存到文件中
【发布时间】:2013-08-23 02:36:24
【问题描述】:

祝大家今天好,

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

我的第一种方法是

sed -n "/PATTERN/,/PATTERN/p" 文件.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.

`

【问题讨论】:

  • 那么,您想从同一个文件中取出多个文本块并将它们保存到不同的文件中吗?并且这些块已经预先定义并且被一些PATTERN分隔?

标签: regex bash shell sed awk


【解决方案1】:

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

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

【讨论】:

  • 我会像这样删除打印输出中的单词 PATTERN 和空白行:awk '/PATTERN/{close("result"f);f++} !/PATTERN|^$/{print $0 > "result"f}' file.log
【解决方案2】:

这可能对你有用:

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

【讨论】:

    猜你喜欢
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2011-11-13
    • 2018-05-23
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多