如何从文件的每一行中提取具有特殊字符的特定字符串

时间:2016-06-11 15:07:20

标签: linux bash sh

我有一个带有丛林丛林的文件。几行内容如下:

 2*H[0, 3, y]*Log[1 - z] - 2*H[2, 3, y]*Log[1 - z] +
 6*H[2, 2, 0, y] + 6*H[2, 2, 2, y] - 48*Log[-Q2] + 12*zeta2*Log[-Q2] +
 (-107 + 12*N^2*(-1 + N^2))*z^2))*(H[0, 1, 0, y] + H[0, 1, 0, z] + ...

我想找到

的不同独特组合
H[*,*,*] or H[*,*,*,*]

进入每一行。因此我必须搜索包含特殊字符的字符串。在shell中有什么办法吗?

1 个答案:

答案 0 :(得分:2)

您可以将此gnu awk命令与自定义RS

一起使用
awk -v RS='H\\[[^]]*\\]' 'RT && !seen[RT]++{print RT}' file

H[0, 3, y]
H[2, 3, y]
H[2, 2, 0, y]
H[2, 2, 2, y]
H[0, 1, 0, y]
H[0, 1, 0, z]

正则表达式H\\[[^]]*\\]会将H[...]的每个实例设置为记录分隔符。

相关问题