在grep中转义斜杠"\"

Mah*_*aha 4 regex linux bash shell grep

我有文件行:

"H:\Check\WP_20140511_029.mp4"
Run Code Online (Sandbox Code Playgroud)

以及其他线路.我想删除指示目录的这些行H:\Check.我试过了

grep -v ".*H:\\Check.*" testout.txt > testout2.txt
Run Code Online (Sandbox Code Playgroud)

但它没有删除那些行.我的正则表达式错了.*H:\\Check.*. regex101显示我的正则表达式正确匹配该行.

anu*_*ava 9

您可以使用:

grep -v 'H:\\Check' testout.txt > testout2.txt
Run Code Online (Sandbox Code Playgroud)

使用单引号来避免反斜杠的过度转义非常重要.

使用双引号等效命令将是这样的:

grep -v "H:\\\Check" testout.txt > testout2.txt
Run Code Online (Sandbox Code Playgroud)

编辑:

\\在双引号中,由于仅在双引号中发生的shell扩展,相当于单个反斜杠.从这些echo命令可以看出:

echo "H:\\Check"
H:\Check

echo 'H:\\Check'
H:\\Check
Run Code Online (Sandbox Code Playgroud)

  • 没有'grep`正则表达式不需要匹配实线.只需匹配您已知的模式 (2认同)