字符之间的匹配字符

时间:2013-10-29 10:42:12

标签: python perl unix awk grep

我正在尝试匹配一个字符,例如{c}文件中的}但它不应介于两者之间 引用,例如"}""fdjskfhjds } 543897dhfhd92-()*&$"。 如何使用grep构建正则表达式?

我现在拥有的返回0匹配的是:

grep '"[^"]* { [^"]*"'

并且这个想法与“{”之间的角色相匹配。 (在此期间我需要not ^来获得更多双引号匹配)

如果使用其他标准的unix工具可以更轻松地完成,欢迎使用解决方案!

2 个答案:

答案 0 :(得分:0)

使用外观断言 grep -P '(?!.*")\}(?!.*")'

以下示例仅查找“more”和“blah”之间的“}”

echo 'blah"}"more}blah' | grep -P '(?!.*")\{(?!.*")'

答案 1 :(得分:0)

假设您的grep版本支持PCRE,您可以说:

'(?<=[^"])}(?=[^"]?)'

例如,

$ echo 'foo}bar"}"baz}' | grep -P '(?<=[^"])}(?=[^"]?)'
foo}bar"}"baz}
   ^         ^      <== The carets denote the matched }