Tenho duas ocorrências em um arquivo contendo a string "exact match":
this is an 'exact match'
this is 'another exact match' line
Se o fizer grep -w 'exact match' file.txt
, recebo ambas as ocorrências.
Gostaria de receber apenas a primeira ocorrência (correspondência exata).
Eu também tentei:
grep -e '\bexact match\b' file.txt
grep -e '\<exact match\>' file.txt
Mas todos eles produzem as duas ocorrências indesejadas.
Qual é a maneira correta de fazer isso com grep?
Se você quiser corresponder as aspas simples, inclua-as no padrão:
Observe que eu uso aspas duplas em torno do padrão, pois uma string com aspas simples nunca pode incluir aspas simples. Como a string de consulta tem aspas duplas, qualquer variável de shell ou substituição de comando dentro da string seria expandida.
Outra forma:
Isso usa aspas duplas apenas em torno das aspas simples, enquanto coloca a
exact match
string entre aspas simples. Variáveis de shell etc. na string não seriam expandidas.Você também pode usar
\''exact match'\'
aspas simples na string e "escapar" as aspas simples literais em ambos os lados, mas pessoalmente acho que parece um pouco feio.No caso de querer extrair apenas a primeira simultaneidade do resultado, bastaria com isso:
-m especifica o número de simultaneidades e 1 significa que apenas a primeira seria mostrada.