4

I'm trying to grep a line with a backslash at the end of the line like:

abc\
def
ghij
...

I hope it can grep the line "abc\". I tried the command below but they didn't work.

grep -EHn "\\$" test_file
grep -PHn "\\$" test_file

How should I solve this problem? I just don't know the logic of escape character in grep. The expression did work in vim.

6
grep '\\$' test_file

works fine for me on Solaris 9 and Ubuntu 12.04.

Single quotes and double quotes differ in which characters are taken literally or used as escape/special characters.

| improve this answer | |
  • It doesn't work on mine. GNU grep 2.6.3. Red Hat – Marcus Thornton Jan 23 '14 at 6:41
3

I somehow overcame the problem by using below:

grep -Hn  "\\\\$"

But I'm not sure why four back slash would work here. It just worked.

| improve this answer | |
  • 1
    Don't use double quotes here. Double quotes do not preserve literal $, \, and backticks. In your case, \\ becomes a \, and \$ becomes a $ before being passed to grep, and only then grep looks for \$. Try echo "\\\\$" to see why. – slhck Jan 23 '14 at 8:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.