我有一个文件需要拆分成多个文件,并且需要通过单独的开始和结束分隔符来完成。
例如,如果我有以下文件:
abcdef
START
ghijklm
nopqrst
END
uvwxyz
START
abcdef
ghijklm
nopqrs
END
START
tuvwxyz
END
我需要 3 个独立的文件:
文件1
START
ghijklm
nopqrst
END
文件2
START
abcdef
ghijklm
nopqrs
END
文件3
START
tuvwxyz
END
我找到了 this显示如何使用起始定界符执行此操作的链接,但我还需要一个结束定界符。我已经尝试在 awk 命令中使用一些正则表达式,但没有得到我想要的结果。我不太明白如何让 awk 变得“懒惰”或“非贪婪”,以便我可以让它正确地拆分文件。
我真的很喜欢 awk 解决方案。类似的东西会很棒(我在这里重新发布解决方案,所以你不必点击:
awk '/DELIMITER_HERE/{n++}{print >"out"n ".txt"}' input_file.txt
感谢任何帮助。
最佳答案
您可以使用这个 awk 命令:
awk '/^START/{n++;w=1} n&&w{print >"out" n ".txt"} /^END/{w=0}' input_file.txt
关于regex - 根据不同的开始和结束分隔符将文件拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387330/