开发者

Grep with quotation mark

I'm trying to scan an error log for lines with 503 errors, 开发者_运维百科so I'm grepping for " 503 (quote space 503).

This seems simple, but it won't work:

grep '" 503 ' access.log

I get the following error:

bash: -c: line 0: unexpected EOF while looking for matching `"' bash: -c: line 1: syntax error: unexpected end of file


Seems like you are running it via some system() in some language, aren't you? Try:

grep '\" 503 ' access.log

or:

grep "\" 503 " access.log

Directly in shell just grep '" 503 ' access.log will work. To reproduce your problem I must do:

bash -c 'grep '\" 503 ' access.log'

This is indeed syntax error. To make that work, I need:

bash -c 'grep "\" 503 " access.log'

You are somehow calling bash -c .... Maybe indirectly. You need to figure you how it's called to figure out what quotes are in collision.


To debug strange effects like this, use "set -x" to show the shell expansions, and what the computer thinks about your command.


I believe I have it working now (not sure because I got no results, but didn't get an error).

The reason is because I'm passing it through an ssh command like the following and I believe SSH is doing some escape trickery:

ssh 123.123.123.123 grep '" 503 ' access.log

Modifiying it to this seems to be the fix:

ssh 123.123.123.123 "grep '\" 503 ' access.log"

Thanks for everyone's time.


The issue was due to some erroneous directives in .bashrc.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜