l'output per i seguenti due comandi è lo stesso:
echo "myname" | grep "my\name"
myname
e anche l'output per il comando successivo è lo stesso,
echo "myname" | grep "my\name"
myname
Qualcuno può pls guida perché si sta producendo la stessa uscita ?? Perché una barra rovesciata in più non influisce anche su eventuali cambiamenti nell'output?
tuttavia, se aumentiamo il numero di backslash su quattro in grep, l'output scompare,
echo "myname" | grep "my\\name"
nessuna uscita
Pls mi guida con il comportamento di grep e backslash in virgolette singole e doppie.
risposte:
2 per risposta № 1Nei primi 2 esempi è corrispondente perché \
nel tuo pattern regex corrisponde a un singolo in input. Un extra
nel 2 ° esempio sta scappando
n
e corrispondente letterale n
in input.
Sarà chiaro con questi esempi:
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