我怎么能grep一个string开头的破折号/连字符?
我想grep的string开头的连字符/连字符,如-X
,在文件中,但它是混淆这作为命令行参数。
我试过了:
grep "-X" grep \-X grep '-X'
使用:
grep -- -X
相关: 一个裸双破折号是什么意思? (感谢关于natty的坚果 )。
破折号字符是Bash中的特殊字符,如http://tldp.org/LDP/abs/html/special-chars.html#DASHREF所述; 。 所以逃避这一次只是让你过去Bash,但Grep仍然有破折号的自己的意思(通过提供选项)。
所以你真的需要逃避两次(如果你不想使用其他提到的答案)。 以下将/应该工作
grep \\-X grep '\-X' grep "\-X"
尝试Bash如何将parameter passing给脚本/程序的一种方法是创build一个只反映所有参数的.sh脚本。 我使用了一个名为echo-args.sh的脚本,它不时地播放,它包含的内容是:
echo $*
我把它作为:
bash echo-args.sh \-X bash echo-args.sh \\-X bash echo-args.sh "\-X"
你明白了。
grep -e -X
将会诀窍。
grep -- -X grep -- "-X" grep \\-X grep "\-X" grep -e -X grep [-]X
我没有访问Solaris机器,但grep "\-X"
在Linux上适用于我。
如上所述,正确的方法是使用“ – ”来停止处理参数。 这是由于在工具的源代码中使用了getopt_long(来自getopt.h的GNU C函数)。
这就是为什么你注意到其他命令行工具上的相同现象; 因为他们大多数是GNU工具,并且使用这个调用,他们performance出相同的行为。
作为一个方面说明 – getopt_long是什么给了我们在-rlo和–really_long_option之间的冷静select,以及在解释器中的参数组合。
你可以使用nawk
$ nawk '/-X/{print}' file
如果您正在使用另一个将单个parameter passing给grep的实用程序,则可以使用:
'[-]X'
ls -l | grep "^-"
希望这个能够达到你的目的。
grep“^ -X”文件
它会grep并从文件中挑选所有的行。 ^在grep中,“^”表示一行以