我无法在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
找不到第二个。
任何帮助都将不胜感激。
答案 0 :(得分:2)
字符类仅匹配一个字符。 (这意味着|
被解释为文字管道字符,而不是交替)
您需要将[]
替换为()
:
(<|<=)
或者:<=?
答案 1 :(得分:1)
在RegEx中,?
生成上一个元素optional。所以<=?
的意思是“给我少于,如果你拥有它就等于你。”
我不确定?
是否需要在sed中进行转义,所以请尝试两种方式,并在发现时告诉我/更新: - )