以下两个命令的输出是相同的:
echo 'my\name' | grep 'my\\name' my\name
而且下一个命令的输出也是一样的,
echo 'my\name' | grep 'my\\\name' my\name
任何人都可以请指导为什么导致相同的输出? 为什么额外的反斜杠也不会影响输出的任何变化?
但是,如果我们在grep中将反斜杠的数量增加到四,那么输出就会消失,
echo 'my\name' | grep 'my\\\\name'
没有输出
请指导我在单引号和双引号中使用grep和反斜杠的行为。
在前面的两个例子中,它是匹配的,因为\\
在你的正则表达式中匹配一个单独的\
输入。 在第二个例子中,额外的\
就是在输入中转义n
和匹配字面n
。
这些例子将会很清楚:
echo 'myname' | grep 'my\name' myname echo 'myname' | grep 'myna\me' myname echo 'myname' | grep 'm\yn\am\e' myname echo 'my\name' | grep 'my\name' echo 'my\name' | grep 'my\\name' my\name echo 'my\name' | grep 'my\\\name' my\name echo 'my\name' | grep 'my\\\nam\e' my\name