在grep中转义斜杠&&

人气:425 发布:2022-10-16 标签: regex linux shell bash grep

问题描述

我有第行的文件:

"H:CheckWP_20140511_029.mp4"

以及其他行。我想删除指示H:Check处的目录的行。我试过了

grep -v ".*H:\Check.*" testout.txt > testout2.txt

但它没有删除这些行。我的正则表达式.*H:\Check.*有什么问题。 regex101 shows我的正则表达式与该行正确匹配。

推荐答案

您可以使用:

grep -v 'H:\Check' testout.txt > testout2.txt

请务必使用单引号,以避免过度转义反斜杠。

使用双引号的等效命令如下:

grep -v "H:\Check" testout.txt > testout2.txt

编辑:

\在双引号中等同于单反斜杠,因为外壳展开只发生在双引号中。从这些echo命令可以明显看出:

echo "H:\Check"
H:Check

echo 'H:\Check'
H:\Check

593