grep不能很好地搜索双引号。甚至都不用“

时间:2018-07-30 15:41:35

标签: bash grep

  • 在Ubuntu 16.04上*

我有一个带有以下行的文件:

s:15:\"https://cnn.com\"

cat myfile.txt | grep https://cnn.com有效。

但是我也想找到s:15部分,所以我尝试:

cat myfile.txt | grep 's:15:\"https://cnn.com\"'

零结果。我在做什么错了?

2 个答案:

答案 0 :(得分:2)

命令的问题不是引号而是反斜杠。由于原始文件中包含反斜杠,因此您也需要将反斜杠与grep匹配(因此,请转义它们):

$ cat myfile.txt | grep 's:15:\\"https://cnn.com\\"'
s:15:\"https://cnn.com\"

答案 1 :(得分:1)

使用'\''的问题在于,您需要加倍使用shell处理您的报价。您需要仅反引号\"或使用单引号而不使用反斜杠{{1} }。两者都将使grep搜索反斜杠和引号。

尝试

  

grep s:15:\“ https://cnn.com \”

  

grep's:15:“ https://cnn.com”'

编辑:由于数据中存在反斜杠字符,因此我的上述答案不正确。由于grep使用反斜杠作为转义字符,因此您需要为其提供双反斜杠以匹配单个匹配项。