-1

I tried to use the grep command to search for a string like -R in a file. But the command thinks, that I am trying to hand over an option like -i for ignore case.

Rui F Ribeiro
57.9k28 gold badges154 silver badges237 bronze badges
asked Jun 9, 2019 at 21:51
4
  • i think that you wrote the answer in your question ... use "-R" , not -R Commented Jun 9, 2019 at 21:58
  • @jsotola are you serious? to the op: use grep -e -R ./-file1 file2, where -R is a pattern starting with -, and ./-file1 is a filename starting with -. Commented Jun 9, 2019 at 21:59
  • 4
    The answer is here: What does "--" (double-dash) mean? (also known as "bare double dash") Commented Jun 9, 2019 at 22:01
  • Thank you, @Freddy and pizdelect, both of your answers work for me! Commented Jun 9, 2019 at 22:13

3 Answers 3

3

The -e option for grep is for explicitly saying "the next argument is the pattern":

grep -e -R file

The above would search for line matching -R in the file called file.

The -e option may occur multiple times on the command line, and grep will use all the given patterns (you will get the lines back that matches any of the patterns).

answered Jun 9, 2019 at 22:14
2

As well as the previously mentioned answers, -- is used to signify the end of options, allowing you to use patterns afterward that may resemble an argument without being interpreted undesirably:

$ echo -R | grep -- '-R'
-R
answered Jun 10, 2019 at 0:53
1

Try to escape the characters grep \\-R myfile.txt:

Example:

$ touch test.txt
$ echo "-R" >> ./test.txt
$ cat test.txt
-R
$ grep \\-R ./test.txt
-R
answered Jun 9, 2019 at 22:02
1
  • Thank you, your answer also works for me! Commented Jun 9, 2019 at 22:13

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.