Para procurar \\" em qualquer lugar em uma linha:
grep -F '\\"'
Ou seja, use -F para uma pesquisa de cadeia fixa em oposição a uma correspondência de expressão regular (em que a barra invertida é especial). E use aspas strongs ( '...' ) dentro do qual a barra invertida não é especial.
Sem -F , você precisaria dobrar as barras invertidas:
grep '\\\"'
Ou use:
grep '\\{3\}"'
grep -E '\{3}"'
grep -E '[\]{3}"'
Dentro de aspas duplas, você precisaria de outro nível de barras invertidas e também escaparia da " com barra invertida:
# 1
# 1234567890123
grep "\\\\\\\""
barra invertida é outro operador de cotação shell. Assim, você também pode citar as barras invertidas e " caracteres com barra invertida:
\g\r\e\p \\\\\\\"
Eu até mesmo citei os caracteres de grep acima, embora isso não seja necessário (como nenhum dos g , r , e , p são especiais para o shell (exceto no shell Bourne se eles aparecem em $IFS . O único caractere que eu não citei é o caractere de espaço, já que precisamos do seu significado especial no shell: argumentos separados.
Para procurar \\" , desde que não seja precedido por outra barra invertida
grep -e '^\\\"' -e '[^\]\\\"'
Ou seja, procure \\" no início da linha ou siga um caractere diferente de barra invertida.
Dessa vez, precisamos usar uma expressão regular, o que uma pesquisa de sequência fixa não fará.
grep retorna as linhas que correspondem a qualquer uma dessas expressões. Você também pode escrever com uma expressão por linha:
grep '^\\\"
[^\]\\\"'
Ou com apenas uma expressão:
grep '^\(.*[^\]\)\{0,1\}\\{3\}"' # BRE
grep -E '^(.*[^\])?\{3}"' # ERE equivalent
grep -E '(^|[^\])\{3}"'
Com o GNU grep construído com suporte a PCRE, você pode usar uma declaração negativa com olhar para trás:
grep -P '(?<!\)\{3}"'
Obter uma contagem de correspondências
Para obter uma contagem das linhas que correspondem ao padrão (isto é, que têm uma ou mais ocorrências de \\" ), adicione a opção -c a grep . Se, no entanto, você quiser o número de ocorrências, poderá usar a opção -o específica do GNU (embora agora também suportada por algumas outras implementações) para imprimir todas as correspondências uma por linha e, em seguida, encaminhar para wc -l para obter uma linha Contagem:
grep -Po '(?<!\)\{3}"' | wc -l
Ou de forma padrão / POSIXly, use awk :
awk '{n+=gsub(/(^|[^\])\{3}"/,"")};END{print 0+n}'
( awk ' gsub() substitui e retorna o número de substituições).