【发布时间】:2021-03-17 13:40:37
【问题描述】:
我有 0.txt 和 1.txt 文件。 0.txt文件中内容如下图:
[{A,B,C},{D,E,F}][{G,H,I}]
1.txt文件内容如下图:
[{A,B,C},{D,E,F}]
[{G,H,I}]
也就是0.txt和1.txt的区别在于1.txt文件中有一个换行符。
我希望能够使用 @ 提取 NTH OCCURRENCE 中 '[' 和 ']' 之间的所有文本987654324@ (Extract the text between the nth occurrence of square brackets),用于 1.txt 文件中显示的文本格式。
所以我的n=2对应的愿望就是2.txt如下图:
{G,H,I}
为此,起初,我能够在没有换行符的情况下仅对文本格式执行此操作,如 0.txt 所示。
我需要知道如何提取 '[' 和 ']' 之间的文本,当出现 1.txt 中所示的换行符时强>。
awk -F'[][]' -v n=2 '{ print $(2*n) }' 1.txt > 2.txt 的输出已经是 0.txt 的所有内容(方括号除外),而不仅仅是{G,H,I}。即2.txt内容如下:
{A,B,C},{D,E,F}
{G,H,I}
编辑更新 01:
考虑到第三次出现,即[{J, K, L}],解决方案必须对第三个输入文件具有以下相同的效果。所以预期的退出应该是{J, K, L}。
[{A,B,C},{D,E,F}]
[{G,H,I}]
[{J,K,L}]
对于第 n 次出现 [{x, y, z, ..}] 的所有目的(尊重 [ 和 ] 中没有文本的条件,并且没有空行)给出的任何解决方案都应该准确解压到输出文件{x, y, z, ..}。
【问题讨论】:
-
感谢您的努力和好帖子(继续努力),能否请您在您的问题中也发布预期输出的示例,更清楚一点,谢谢。
-
-F'[][]'实际上在[和]之间找不到文本。例如awk -F'[][]' -v n=1 '{ print $(n*2) }' <<< '[abc'将打印abc