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

标签 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 中做?

最佳答案

您可以将此 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[...] 的每个实例设置为记录分隔符。

关于linux - 如何从文件的每一行中提取具有特殊字符的特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37765211/

相关文章:

linux - linux shell 管道是流水线吗?

linux - 用于调用 bash 命令的文本编辑器模式

bash - 我怎样才能对带有前导零的数字变量进行 bash 算术运算?

java在centos 6.5升级后返回VM错误

c++ - vector 加法运算

linux - 在 Unix 系统中查找用户主库的绝对路径

linux - shell脚本从属性文件中读取数组中的属性

linux - 当行以 ":"结束时,在行尾添加某些字符

linux - Bash 内置哈希和命令搜索

linux - 在创建 tar 文件时,整个路径被创建为 tar 文件