Como exibir o número de linhas que estão em branco ou contêm esses caracteres

1

Eu preciso contar o número de linhas que contém vírgula, apóstrofo ou uma linha completamente em branco.

Eu sei contar o número de linhas em branco que eu faria egrep -xc '' filename

Mas não tenho certeza de como fazer tudo isso de uma só vez, para também obter as linhas com apóstrofo e vírgula, além de linhas em branco.

    
por John Stacen 28.09.2013 / 15:57

1 resposta

5

Parece que você está fazendo sua lição de casa hoje ...

Uma solução:

grep -c "\([',]\|^$\)" filename

Se por linha em branco você também quiser incluir aqueles que contenham apenas espaços:

grep -c "\([',]\|^[[:space:]]*$\)" filename

O truque para apóstrofos é usar aspas duplas, caso contrário ''' será um erro. A construção \( regexp1 \| regexp2 \) corresponderá a todas as linhas que corresponderem a regexp1 ou regexp2 . O regexp [',] corresponde a todas as linhas que contêm uma cotação ' ou uma coma , .

Aqui você precisa escapar os parênteses () e o canal | caso contrário o grep tenta encontrar esses caracteres e não os considera como construções regexp. Se você não gosta de escapar, você pode usar a opção -E (para regexps estendidos) ou egrep diretamente como:

grep -cE "([',]|^$)" filename

ou

egrep -c "([',]|^$)" filename

No seu OP, você menciona a opção -x . Ele funciona para obter linhas vazias ... mas não vai funcionar com o seu coma / exigência de cotação. Então, para corresponder a uma linha em branco, estou usando ^$ ( ^ é uma âncora para o início da linha e $ é uma âncora para o final da linha).

Espero que isso ajude.

    
por gniourf_gniourf 28.09.2013 / 16:18