在 windows 中转义 gawk 中的括号

Escaping parenthesis in gawk in windows

我在 awk 中尝试转义括号时遇到了一个相当奇怪的问题。我的文件有以下行

79-Au-196 isomer state population  0.153658     mb (m1 E= 0.5957MeV Jp=-12.0)

所以我想提取第 5 列(即 0.153658)。为此,我 运行 以下

>gawk "/79-Au-196 isomer state population/{if(=="\(m1")print }" Au_test.out

而我得到的是

> gawk: /79-Au-196 isomer state population/{if(==\(m1)print } gawk: 
>                                                  ^ backslash not last character on line

我尝试用 "%s(m2"'\(m2' 替换 "\(m2" 但实际上没有任何效果。

知道如何让它发挥作用吗?

tl;博士:

gawk "/79-Au-196 isomer state population/{if(==\"(m1\")print }" Au_test.out

  • Windows,你必须使用"..."(双引号)你的 gawk 脚本。

    • '...' 引号(单引号)- 在 Unix 平台上应始终用于分隔 awk 脚本 - [=15 无法识别=].
  • 然后这需要 \-转义任何 " 实例 脚本中。

  • 相比之下,((括号)不需要==\"(m1\"中转义,因为从gawk从你的角度来看,你在 字符串文字 中使用它,它与 ==.

  • 的字段值进行比较