我有一个表格的文本文件:
图案
信息
图案
不同的信息
图案
更多不同的信息
重复50次。我想把这个文件创建50个文件,每个文件只包含:
图案
下面的任何信息都会在下一个标题之前停止。
要清楚,模式完全相同,所有50次,然后它下面有独特的数据。
有人可以告诉我如何使用grep或sed或其他东西来做这件事吗?
由于
答案 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