How can I grep for a string that begins with a dash/hyphen? How can I grep for a string that begins with a dash/hyphen? unix unix

How can I grep for a string that begins with a dash/hyphen?


The dash is a special character in Bash as noted at http://tldp.org/LDP/abs/html/special-chars.html#DASHREF. So escaping this once just gets you past Bash, but Grep still has it's own meaning to dashes (by providing options).

So you really need to escape it twice (if you prefer not to use the other mentioned answers). The following will/should work

grep \\-Xgrep '\-X'grep "\-X"

One way to try out how Bash passes arguments to a script/program is to create a .sh script that just echos all the arguments. I use a script called echo-args.sh to play with from time to time, all it contains is:

echo $*

I invoke it as:

bash echo-args.sh \-Xbash echo-args.sh \\-Xbash echo-args.sh "\-X"

You get the idea.


grep -e -X will do the trick.