0

我无法将此模式 <= 与 sed 中的正则表达式匹配。我真正需要的是类似 [<|<=] 或类型匹配的东西。我可以让它与 .* 一起使用,但这偶尔会在该行的其余部分产生其他问题。示例行将是:

for (int j = 0 j < nspec ++j)

或者

for (int j = jmin j <= jmax ++j)

以下(部分)命令作为示例。

sed -n '/for (int *\([[:graph:]]\) *= *\([[:graph:]]\) *\1 *</p' filename

会找到第一个模式,但是

sed -n '/for (int *\([[:graph:]]\) *= *\([[:graph:]]\) *\1 *<=/p' filename

找不到第二个。

任何帮助,将不胜感激。

4

2 回答 2

2

字符类只匹配一个字符。(这意味着|被解释为文字管道字符,而不是交替)

您需要替换[]()

(<|<=)或者:<=?

于 2012-11-24T17:52:43.637 回答
1

在 RegEx 中?,前一个元素是可选的。所以<=?意思是“给我小于,如果你有就等于”。

我不确定是否?需要在 sed 中转义,所以尝试两种方式,当你发现时请告诉我/更新:-)

于 2012-11-24T17:53:51.320 回答