在 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
从你的角度来看,你在 字符串文字 中使用它,它与 ==
.
的字段值进行比较
我在 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
从你的角度来看,你在 字符串文字 中使用它,它与==
. 的字段值进行比较