我想在文件中grep以破折号/连字符开头的字符串,比如-X,但这是一个命令行参数。
我试过了:
grep "-X"
grep \-X
grep '-X'
我想在文件中grep以破折号/连字符开头的字符串,比如-X,但这是一个命令行参数。
我试过了:
grep "-X"
grep \-X
grep '-X'
当前回答
如果您正在使用另一个实用程序,它将单个参数传递给grep,您可以使用:
'[-]X'
其他回答
grep -e -X就可以了。
没有一个答案对我没有帮助(ubuntu 20.04 LTS)。 我找到了另一个选择:
我的情况:
systemctl --help | grep -w -- --user
-w将匹配一个完整的单词。 ——表示命令参数的结束(将-w标记为不属于grep命令)
grep -- -X
grep \\-X
grep '\-X'
grep "\-X"
grep -e -X
grep [-]X
破折号是Bash中的一个特殊字符,请参见http://tldp.org/LDP/abs/html/special-chars.html#DASHREF。因此,转义一次只是让您跳过Bash,但Grep仍然有它自己的破折号的含义(通过提供选项)。
所以你真的需要转义它两次(如果你不喜欢使用其他提到的答案)。下面的方法会/应该会起作用
grep \\-X
grep '\-X'
grep "\-X"
尝试Bash如何将参数传递给脚本/程序的一种方法是创建一个.sh脚本,该脚本只回显所有参数。我使用一个名为echo-args.sh的脚本来不时地玩,它所包含的是:
echo $*
我援引它为:
bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"
你懂的。
ls -l | grep "^-"
希望这个对你有用。