【问题标题】:grep exclude strings somthing with regular expression stringgrep 用正则表达式字符串排除字符串
【发布时间】:2016-11-24 02:55:20
【问题描述】:

我有一个测试文件:

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)

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

请帮帮我,谢谢~~~

【问题讨论】:

  • 欢迎来到 Stack Overflow!您可以通过格式化代码来帮助我们帮助您,这样我们就不必滚动它了。
  • 你忘了告诉我们你想做什么。打印第 1 行、第 3 行和第 8 行会产生您预期的输出,但这可能不是您正在寻找的解决方案。

标签: regex linux shell grep


【解决方案1】:
grep "'" file

输出:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      【解决方案3】:

      你没试过吗?

      cat <file> | grep -v  base64
      

      或者像波西米亚人所说的那样

      grep -v base64 <file>
      

      【讨论】:

      • 或者只是grep -v base64 &lt;file&gt;
      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2020-10-27
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多