我们可以使用带有 w 选项的 sed 将文件拆分成多个文件。可以通过指定行地址或模式来拆分文件

假设我们要分割这个源文件:

cat -n sourcefile

1 在宁南农
2 奶牛去哪里奉!
3,猴子都说 BOO!
4 有一个 Nong Nang Ning
5 哪里的树去 Ping!
6 和茶壶 jibber jabber joo。
7 在 Nong Ning Nang

按行号拆分文件的命令:

sed '1,3w f1
> 4,7w f2' sourcefile

这将 line1 写入 line3 到文件 f1,line4 到 line7 从源文件写入文件 f2。

cat -n f1

1 在宁南农
2 奶牛去哪里奉!
3,猴子都说 BOO!

cat -n f2 

1 有一个 Nong Nang Ning
2 哪里的树去 Ping!
3 和茶壶 jibber jabber joo。
4 在农宁南

按上下文/模式拆分文件的命令:

sed '/Ning/w file1
> /Ping/w file2' sourcefile

这会将源文件拆分为 file1 和 file2。file1 包含与 Ning 匹配的所有行,file2 包含与 Ping 匹配的行。

cat file1

在宁馕侬
有一个侬馕宁
在农馕宁

cat file2

树木去哪里 Ping!