É sabido que os programas com interface gráfica são mais cómodos de utilizar, porque são concebidos para requisitos elevados, além de que o terminal permite resolver determinadas tarefas muito mais rapidamente. Assim, existe um utilitário wc, que pode contar o número de linhas de um ficheiro. O número de linhas não diz muito, mas no caso em que vários comandos são combinados, pode contar as linhas, tendo em conta os parâmetros necessários. Como contar as linhas de um ficheiro Linux? Vamos destacar alguns exemplos simples mas eficazes de utilização dos comandos grep, sed e awk.
Já vimos o comando WC, agora devemos familiarizar-nos com um dos seus parâmetros chave -l
. Este parâmetro conta as transições para uma nova linha, ou seja, toda a linha é contada, incluindo as linhas vazias. O comando lida com a tarefa mais rapidamente do que todos os outros, mas apenas determinadas cadeias de caracteres são possíveis - com uma determinada condição.
$ wc -l name_file
$ grep -c $ name_file
$ sed -n $= name_file
$ awk 'END{ print NR }' name_file
Como podemos ver, o resultado é o mesmo, mas o comando wc demorou menos tempo a concluir a tarefa. Os outros comandos são aplicáveis a consultas complexas. O comando grep permite-lhe encontrar cadeias de caracteres apenas com texto: grep -c 'texto' nome_do_ficheiro
.
$ grep -c 'text' file_name
O comando grep lida com expressões regulares, pelo que pode combinar várias condições AND, OR, NOT.
Quando sed executa o processamento de texto, mas é muito mais fácil efetuar uma contagem final de linhas com o comando wc. Pode apagar todas as linhas que tenham menos de três caracteres. e os casos complexos são contados sem comentários.
$ sed -r '/^.{,3}$/d' file_name | wc -l
Se a tarefa for simples. pode ser feita de outras formas. O comando awk será mais simples e fácil de entender.
$ awk 'length >3' file_name | wc -l
Para um exemplo visual do comando awk, vamos efetuar a contagem de cadeias de caracteres enquanto procuramos o valor pretendido no ficheiro de tabela csv.
No exemplo, vamos contar o número de linhas com o valor do segundo parâmetro superior a 50.
$ awk '$2+0 > 50' file_name | wc -l
Adicione 0 à expressão para remover todas as expressões não numéricas.