使用bash脚本将文本文件拆分为两个

Ser*_*lev 7 bash awk text split sed

我有一个文本文件,中间有一个标记:

one
two
three
blah-blah *MARKER* blah-blah
four
five
six
...
Run Code Online (Sandbox Code Playgroud)

我只需要将这个文件分成两个文件,第一个包含MARKER之前的所有文件,第二个包含MARKER之后的所有文件.看来它可以用awk或sed在一行中完成,我只是无法弄清楚如何.

我尝试了简单的方法 - 使用csplit,但csplit与Unicode文本不兼容.

gho*_*g74 10

你可以用awk轻松完成

awk -vRS="MARKER" '{print $0>NR".txt"}' file
Run Code Online (Sandbox Code Playgroud)


Len*_*rri 5

试试这个:

awk '/MARKER/{n++}{print >"out" n ".txt" }' final.txt
Run Code Online (Sandbox Code Playgroud)

它将从final.txt读取输入并生成out1.txt,out2.txt等...