Como grep whitespace excluir caracteres de nova linha?

2

Hoje preciso verificar quais linhas de meus arquivos contêm espaços em branco à direita. E eu descobri uma solução:

grep -Enr --color "\s+$" ./

Isso funciona bem, exceto para as linhas que contêm caracteres de nova linha não-Unix.

Esses caracteres de nova linha estarão considerando correspondência válida para \s .

Como excluí-los no OSX grep ?

    
por Zen 25.05.2015 / 12:17

1 resposta

3

Supondo que você queira dizer que não deseja corresponder a \r , basta especificar que está atrás de uma guia ou de um espaço e nada mais:

grep -P '[\t ]$' file 

Como você está no OSX, seu grep não terá -P , então tente:

grep -E $'\t'"| $" file 

Como alternativa, você pode usar a classe de caracteres POSIX:

grep  '[[:blank:]]$' file

Como explicado em man wctype , a classe de caractere [[:blank:]] "realiza a função de classificação isblank (3)" e, como explicado em man isblank , ou seja:

   isblank()
      checks for a blank character; that is, a space or a tab.

Por fim, você também pode usar outra ferramenta:

    sed -n '/[\t ]$/p' file 
    perl -ne 'print if /[\t ]$/' file 
    
por 25.05.2015 / 14:17

Tags