a saída para os dois comandos a seguir é a mesma:
echo "myname" | grep "my\name"
myname
e também a saída para o próximo comando também é a mesma,
echo "myname" | grep "my\name"
myname
Alguém pode pls guiar porque está resultando na mesma saída? Por que uma barra invertida extra também não afeta nenhuma alteração na saída?
no entanto, se aumentarmos o número de barras invertidas para quatro no grep, a saída desaparece
echo "myname" | grep "my\\name"
sem saída
Pls me guia com o comportamento de grep e backslash em aspas simples e duplas.
Respostas:
2 para resposta № 1Nos dois primeiros exemplos, ele está correspondendo porque \
no seu padrão regex está combinando um único na entrada. Um extra
no segundo exemplo é apenas escapar
n
e correspondência literal n
na entrada.
Ficará claro com estes exemplos:
echo "myname" | grep "myname"
myname
echo "myname" | grep "myname"
myname
echo "myname" | grep "myname"
myname
echo "myname" | grep "myname"
echo "myname" | grep "my\name"
myname
echo "myname" | grep "my\name"
myname
echo "myname" | grep "my\name"
myname