我正在尝试在文件上查找一些行。我使用正则表达式并用 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