regex - 根据不同的开始和结束分隔符将文件拆分为多个文件

标签 regex command-line awk split delimiter

我有一个文件需要拆分成多个文件,并且需要通过单独的开始和结束分隔符来完成。

例如,如果我有以下文件:

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/

相关文章:

linux - awk 命令修改文件中的列

java - 黑客排名java字符串正则表达式用户名

linux - Bash 退格字符的正确使用

c# - 如何绕过命令行长度限制?

linux - 使 awk 打印单行的特定段

linux - 在终端中使用 AWK 在 CSV 中添加列标题

ruby - 意外的正则表达式行为

c# - 简单的正则表达式帮助

Python 文件路径在 pycharm 正则表达式混淆中失败

command-line - 来自 CMD 的分区信息