![grep -P 负向前看不起作用](https://linux22.com/image/767135/grep%20-P%20%E8%B4%9F%E5%90%91%E5%89%8D%E7%9C%8B%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试在文件上查找一些行。我使用正则表达式并用 grep -P 执行它,但出现错误。表达式是:[A-Za-z0-9]{6}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2} =>.*@(?!gmail.com)
我执行:grep -oP "[A-Za-z0-9]{6}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2} =>.*@(?!gmail.com)" /var/log/exim/main.log-prueba | sort | uniq | wc -l
并出现此错误:-bash: !gmail.com: event not found
您能帮我解决这个问题吗?谢谢。
答案1
Bash 在将参数传递给 grep 之前会对其进行扩展。请转义!
或使用单引号。
grep -oP '[A-Za-z0-9]{6}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2} =>.*@(?!gmail.com)' /var/log/exim/main.log-prueba
或者:
grep -oP "[A-Za-z0-9]{6}-[A-Za-z0-9]{6}-[A-Za-z0-9]{2} =>.*@(?\!gmail.com)" /var/log/exim/main.log-prueba