如何根据模式的第一次匹配来分割文本文件?文件只需分成 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