Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question

2 Answers 2

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.

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

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.

share|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 at 8:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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