Quero contar o número de palavras de 6 letras que começam com 'bar' e terminam com 'i' ou 'n'.
Por exemplo, dado este arquivo:
barxxi
barxxc
barxxn
barqwq
barovo
a saída deve ser 2 (inteiro), pois essas linhas correspondem:
barxxi
barxxn
Meu código é o seguinte, mas parece estar errado:
grep -c 'bar??[ni]' /path/file.txt
Use
grep -o
which produz apenas o texto correspondente, várias vezes por linha, se necessário.O
\<
e\>
corresponde ao início e ao fim de uma palavra. O[^ ]
corresponde a um caractere sem espaço.Substitua seus pontos de interrogação
?
por pontos.
e seu grep deve funcionar, desde que sua entrada seja apenas uma palavra por linha.A solução awk acima também deve funcionar. Levando em conta as múltiplas entradas em cada linha, o awk procura desde a primeira entrada delimitada por espaço no arquivo em cada linha até a última entrada (NF) se o padrão corresponde às expressões regulares com ~ e incrementa uma contagem de acordo. Duas instruções if são criadas para levar em conta um início de linha (^) e barra, bem como um espaço e uma barra. Ao final, a contagem é impressa na tela.