regexp特殊字符

时间:2018-01-04 09:31:00

标签: regex sed grep

如何在grep或sed中使用特殊字符进行正则表达式?

我想从文本文件中搜索“这是一个(测试)”模式,该文件包含以下行:

这是一个测试 这是(测试)!
这是(测试)

只有第3行是我想要返回的结果,是否可能?

1 个答案:

答案 0 :(得分:0)

grep选项-F按字面意思处理所有字符:

grep -F 'This is a (test)'

来自grep --help

  

-F, - 固定字符串PATTERN是一组换行符分隔的字符串

然而

grep -F 'This is a (test)' <<END
This is a test
This is a (test)!
This is a (test)
END

This is a (test)!也匹配,如果模式以字边界-w结尾可以提供帮助

grep -Fw 1 <<END
12
1
END

否则必须转义特殊字符

grep '^This is \(a test\)$' 

或perl扩展程序\Q..\E可用于转义\Q\E之间的特殊字符

grep -P '^\QThis is a (test)\E$'