Como grep linhas que têm mais do que um número específico de caracteres especiais

2

Gostaria de saber qual é a melhor maneira de obter linhas de texto com mais do que um número específico de caracteres especiais.

Digamos que você já saiba que cada linha tem 4 vírgula , e gostaria de ter linhas que tenham mais de 4 vírgulas ,

Exemplo

hi,hello,how,are,you
catch,me,then,say,hello,then

Resultado

catch,me,then,say,hello,then
    
por αԋɱҽԃ αмєяιcαη 22.12.2017 / 11:00

4 respostas

4

Solução de Perl:

perl -ne 'print if tr/,// > 4'
  • -n lê o arquivo linha por linha
  • o operador tr retorna o número de correspondências.

Para imprimir as linhas com menos de 4, basta alterar > para < .

    
por 22.12.2017 / 11:09
1

Usando o comando grep :

grep -E '(,.*){5,}' myfile

faz o trabalho. Explicação:

-E : use um Regex estendido ...

'(,.*) : ... para encontrar uma vírgula seguida por qualquer número de caracteres, até zero ...

{5,}' : ... e repita o padrão anterior 5 vezes ou mais.

Se você deseja grep linhas com menos de 4 vírgulas, substitua {5,}' por {0,3}' .

    
por 22.12.2017 / 11:08
1

A versão awk :

awk -F, 'NF > 5' myfile
    
por 22.12.2017 / 11:23
-1

Resultado obtido abaixo de um revestimento

l='awk 'BEGIN{print }{print gsub(",","")}' example.txt |sed '/^$/d' |awk '$1 > 4 {print NR}'';sed -n ''$l'p' example.txt  
output
catch,me,then,say,hello,then
    
por 23.12.2017 / 10:30