Wil*_*ess 47 regex unix grep regex-negation
我需要一个包含unix grep的单行正则表达式,包括alpha,但不包含beta.
grep 'alpha' <> | grep -v 'beta'
Run Code Online (Sandbox Code Playgroud)
    noh*_*hat 41
其他答案在这里表现出一定的方法可以扭曲不同品种的正则表达式来做到这一点,但我认为它会证明,答案是,在一般情况下,"不这样做".执行这些正则表达式比使用您使用的任何语言的布尔逻辑组合两个正则表达式要难得多,执行速度可能更慢.如果您grep在unix shell提示符下使用该命令,只需将一个结果传递给另一个:
grep "alpha" | grep -v "beta"
Run Code Online (Sandbox Code Playgroud)
我一直用这种结构来减少过多的结果grep.如果你知道哪个结果集会更小,那么首先将它放在管道中以获得最佳性能,因为第二个命令只需处理第一个输入而不是整个输入.
she*_*ter 29
好吧,因为我们都发布了答案,这里是awk ;-)
awk '/x/ && !/y/' infile
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
Mr4*_*r47 19
^((?!beta).)*alpha((?!beta).)*$ 我会想到这个伎俩.