从单个文本文件创建多个文本文件,在重复的相同模式之间找到文本

时间:2017-10-09 20:41:46

标签: sed grep

我有一个表格的文本文件:

  

图案

     

信息

     

图案

     

不同的信息

     

图案

     

更多不同的信息

重复50次。我想把这个文件创建50个文件,每个文件只包含:

  

图案

     

下面的任何信息都会在下一个标题之前停止。

要清楚,模式完全相同,所有50次,然后它下面有独特的数据。

有人可以告诉我如何使用grep或sed或其他东西来做这件事吗?

由于

2 个答案:

答案 0 :(得分:0)

尝试:

awk '/pattern/{close(f); f="file" ++c ".out"} f{print>f}' file

这将创建文件file1.out,file2.out等,其中信息以pattern开头。

如何运作

  • /pattern/{close(f); f="file" ++c ".out"}

    每当我们看到匹配正则表达式pattern的行时,请关闭文件f并为f指定新名称。 c是一个计数器,每次我们看到pattern时都会递增。

  • f{print>f}

    如果f非空(意味着我们已经看到第一次出现pattern),则将当前行打印到文件f

实施例

让我们从这个示例文件开始:

$ cat file
pattern
info
pattern
different info
pattern
more different info

现在,让我们运行我们的命令并查看它创建的输出文件:

$ awk '/pattern/{close(f); f="file" ++c ".out"} f{print>f}' file
$ cat file1.out
pattern
info
$ cat file2.out
pattern
different info
$ cat file3.out
pattern
more different info

答案 1 :(得分:0)

您可以使用拆分

split -l 4 infile