【发布时间】:2021-11-01 07:46:42
【问题描述】:
我正在尝试使用命令行程序将较大的文本文件拆分为块:
- 在定义的正则表达式模式上拆分
- 由该正则表达式模式中的捕获组定义的文件名
文本文件的格式为:
# Title
# 2020-01-01
Multi-line content
goes here
# 2020-01-02
Other multi-line content
goes here
输出应该是这两个文件,文件名和内容如下:
2020-01-01.md ↓
# 2020-01-01
Multi-line content
goes here
2020-01-02.md ↓
# 2020-01-02
Other multi-line content
goes here
我似乎无法正确掌握所有标准。
拆分(分隔符)的正则表达式模式很简单,类似于^# (2020-.*)$
我无法设置一个多行正则表达式模式,该模式越过\n 换行符并在下一次出现分隔符模式时停止。
或者我可以在正则表达式模式上使用csplit 拆分,但我无法使用(2020-.*) 中捕获的内容命名文件
同样适用于 awk split() 或 match(),无法使其完全正常工作。
我正在寻找一个通用的解决方案,参数是定义块开始(例如# 2020-01-01)和结束(例如下一个日期标题# 2020-01-02 或EOF)的正则表达式模式
【问题讨论】:
标签: bash unix awk text-processing unix-text-processing