我怎么能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中,“^”表示一行以