根据第一个匹配模式分割文件

根据第一个匹配模式分割文件

如何根据模式的第一次匹配来分割文本文件?文件只需分成 2 个部分,一个部分包含匹配模式的行之前的所有内容,一个部分包含匹配的行以及之后的所有内容。它之后的行也将再次包含模式,但这不应触发多个部分。

答案1

尝试:

sed '/pattern/q' file.txt | grep -v "pattern" > part1.txt
sed -n `sed -n '/pattern/=' file.txt | head -1`',$p' file.txt > part2.txt

哪里file.txt- 您的文件

答案2

但我不确定我是否理解了最后一句话:

这应该复制文件的所有行,直到排除模式的行

head -n `grep -e "YOUR PATTERN" -n YOURFILE | head -1 | awk -F ":" '{print $1-1}'` YOURFILE > FIRST_FILE_OUTPUT.txt   

此灵魂从所包含的图案行复制至末尾。

tail -n `grep -e "YOUR PATTERN" -n YOURFILE | head -1 | awk -F ":" '{print "+"$1}'` YOURFILE > SECOND_FILE_OUTPUT.txt

其中 YOURFILE 是要拆分的输入文件,YOUR PATTERN 是您要在文件中搜索的“关键字”。FIRST_FILE_OUTPUT.txt 和 SECOND_FILE_OUTPUT.txt 是输出文件,您可以在其中找到文件的第一部分和第二部分。

答案3

怎么样

awk -F'+' '{ print $1 }' < abc > firstpart.txt
awk -F'+' '{ print $1 }' < abc > secondpart.txt

相关内容