我有一个以下格式的 TOML 文件(类别可以有任何名称,顺序编号只是一个例子,不能保证):
[CATEGORY_1]
A=1
B=2
[CATEGORY_2]
C=3
D=4
E=5
...
[CATEGORY_N]
Z=26
Run Code Online (Sandbox Code Playgroud)
我想要实现的是检索给定类别中的文本。
所以,如果我指定,比方说,[CATEGORY_1]
我希望它给我输出:
A=1
B=2
Run Code Online (Sandbox Code Playgroud)
我尝试使用标志grep
来完成此任务,z
因此它可以将换行符解释为空字节字符并使用此正则表达式:
(^\[.*]) # Match the category
((.*\n*)+? # Match the category content in a non-greedy way
(?=\[|$)) # Lookahead to the start of other category or end of line
Run Code Online (Sandbox Code Playgroud)
除非我删除^
了表达式开头的 ,否则它不起作用。但是,如果我这样做,它会将松散的括号错误解释为一个类别。
有没有办法正确地做到这一点?如果没有grep
,则使用其他工具,例如sed
或awk
。