Escape aspas duplas em grep


96

Eu queria fazer grep para palavras-chave com aspas duplas dentro. Para dar um exemplo simples:

echo "member":"time" | grep -e "member\""

Isso não combina. Como posso corrigir isso?

Respostas:


139

O problema é que você não está escapando corretamente da string de entrada, tente:

echo "\"member\":\"time\"" | grep -e "member\""

Como alternativa, você pode usar aspas duplas sem escape entre aspas simples:

echo '"member":"time"' | grep -e 'member"'

É uma questão de preferência que você achará mais clara, embora a segunda abordagem evite que você aninhe seu comando em outro conjunto de aspas simples (por exemplo ssh 'cmd').


1
Isso vai funcionar ? echo '"member":"time"' |grep -e "member"não testei
formiga

Quase. Precisa ser echo '"member":"time"' |grep -e 'member"'. Ambas as abordagens são válidas, mas eu prefiro o escape explícito, pois a intenção é mais clara.
cmh

Sim, talvez edite sua resposta se você gosta de alguém pode preferir isso (+1)
formiga

Isso (usando barra invertida) não funciona no Windows para mim. Na verdade, funciona parcialmente, mas não consigo redirecionar a saída para um arquivo.
Radim Cernej

@RadimCernej Eu recomendo fazer uma pergunta específica do Windows - parece fora do escopo desta.
cmh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.