我有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文件中存在换行符。
我的愿望是能够提取所有的文本“[”和“]”你的第N次出现使用awk -F'[][]' -v n=2 '{ print $(2*n) }' 1.txt > 2.txt
(提取方括号的第n次出现之间的文本),这对于文本格式显示在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, ..}]
(考虑到[和]中没有文本,并且没有空行的条件),给出的任何解决方案都应准确地提取到Output文件中{x, y, z, ..}
。
如何提取给定记录号之间
[
和]
具有给定记录号的文本
您可以尝试使用此gnu-awk
命令,不管括号对之间是否存在换行符
awk -v n=2 -v RS='\\[[^]]*]' 'RT && NR == n {print substr(RT, 2, length(RT)-2)}' file
{G,H,I}
由于我们使用的是自定义格式RS
,[...]
因此无论第二对[...]
是第一行还是第二行,它都将打印正确的记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句