grep使用正则表达式字符串排除字符串somthing

时间:2016-11-24 02:55:20

标签: regex linux shell grep

我有一个测试文件:

base64_decode(xxx)
bas'.'e64'.'_decode(xxx)
ba'.'s'.'e64'.'_deco'.'de(xxx)
xxxxxxx
ttttttt
bbbbbb
vvvvvvv
b'.'a'.'s'.'e'.'64'.'_de'.'co'.'de(xxx)

我有测试命令

grep -i -E -e "b[\'\.]*a[\'\.]*s[\'\.]*e[\'\.]*6[\'\.]*4[\'\.]*_[\'\.]*d[\'\.]*e[\'\.]*c[\'\.]*o[\'\.]*d[\'\.]*e[\'\.]*" test.txt

但是,结果包括行

base64_decode(xxx)

我想删除这一行:

base64_decode(xxx)

并且必须包含以下行:

bas'.'e64'.'_decode(xxx)
ba'.'s'.'e64'.'_deco'.'de(xxx)
b'.'a'.'s'.'e'.'64'.'_de'.'co'.'de(xxx)

我认为我的正则表达式字符串是错误的。

请帮助我,谢谢~~~

3 个答案:

答案 0 :(得分:1)

grep "'" file

输出:

bas'.'e64'.'_decode(xxx)
ba'.'s'.'e64'.'_deco'.'de(xxx)
b'.'a'.'s'.'e'.'64'.'_de'.'co'.'de(xxx)

答案 1 :(得分:0)

你没试过吗?

cat <file> | grep -v  base64

或波希米亚评论

grep -v base64 <file>

答案 2 :(得分:0)

我不知道grep,所以我不确定这个正则表达式是否会起作用,因为它需要支持积极前瞻。但这是:

^b(?=[ase64_dcod]*')[.']*a[.']*s[.']*e[.']*6[.']*4[.']*_[.']*d[.']*e[.']*c[.']*o[.']*d[.']*e[.']*.+$

基本上检查在匹配其余字符串之前,在初始'b'之后的某处是否有单引号。

如果支持,*之后的所有格修饰符(+)可能会加快搜索速度。

https://regex101.com/r/UiCyCN/2