如何在grep或sed中使用特殊字符进行正则表达式?
我想从文本文件中搜索“这是一个(测试)”模式,该文件包含以下行:
这是一个测试
这是(测试)!
这是(测试)
只有第3行是我想要返回的结果,是否可能?
答案 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$'