我可以帮助您进行翻译。以下是关于IT技术的内容:
我有一个文本文件,在中间某个位置有一个标记:
one
two
three
blah-blah *MARKER* blah-blah
four
five
six
...
我只需要把这个文件分成两个文件,第一个文件包含MARKER之前的所有内容,第二个文件包含MARKER之后的所有内容。看起来可以用awk或sed在一行中完成,我只是想不出怎么实现。
我尝试了简单的方法-使用
csplit
,但csplit与Unicode文本不兼容。您可以使用awk轻松完成此操作
awk -vRS="MARKER" '{print $0>NR".txt"}' file
试试这个:
awk '/MARKER/{n++}{print >"out" n ".txt" }' final.txt
csplit
并按照你想要的方式工作,即将标记排除在文件之外。 - Leniel Maccaferrised -n '/MARKER/q;p' inputfile > outputfile1
sed -n '/MARKER/{:a;n;p;ba}' inputfile > outputfile2
或者全部在一个文件中:
sed -n -e '/MARKER/! w outputfile1' -e'/MARKER/{:a;n;w outputfile2' -e 'ba}' inputfile
split
命令几乎可以实现你想要的功能:
$ split -p '\*MARKER\*' splitee
$ cat xaa
one
two
three
$ cat xab
blah-blah *MARKER* blah-blah
four
five
six
$ tail -n+2 xab
four
five
six