我正在尝试打印出其中包含字符“ g(tot)”的一堆输出文件的行。
awk '/g(tot)/{print}' ./*/*.out
但是,这没有打印任何内容,这似乎是由于“ tot”周围的括号引起的。我该如何解决?
答案 0 :(得分:1)
(
和)
在正则表达式中被解释为特殊字符。
使用(
转义)
和\
:
awk '/g\(tot\)/{print}' ./*/*.out
答案 1 :(得分:0)
F:\eclipse\plugins\org.[...].jar
是RegEx中的特殊字符,它们用于捕获组中的东西
(…)
像算术一样,圆括号用于将正则表达式分组。它们可用于连接包含交替运算符“ |”的正则表达式。例如,“ @(samp | code){[^}] +}”与“ @code {foo}”和“ @samp {bar}”都匹配。 (这些是Texinfo格式的控制序列。此列表中进一步说明了“ +”。)
所以()
实际上匹配/g(tot)/
而不是gtot
。
您需要像g(tot)
这样逃避它。
另外,您也可以删除部分/g\(tot\)/
,这是在条件之后暗含的,因此总计为:
{print}
但是,对于这个简单的任务,我建议您使用awk '/g\(tot\)/' ./*/*.out
代替:
grep
您也可以使用awk 'g\(tot\)' ./*/*.out
:
sed