De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Marcelo Pereira
Data de Publicação: 04 de Outubro de 2001
Ao editar arquivos texto, especialmente aqueles de configuração, às vezes nos deparamos com a necessidade de inserir caracteres no início de várias linhas, na maior parte das vezes isso acontece quando precisamos comentar um bloco inteiro de código, e isso faz com que tenhamos o trabalho de inserir um a um os caracteres que precisamos.
Utilizando as ferramentas disponíveis nas distribuições Linux/Unix/FreeBSD é possível agilizar não apenas este processo, mas inúmeros outros que possam surgir. Este é o caso do cat, sed, grep, awk, tail, head, cut, sort, entre outros.
A dica a seguir utiliza o awk para comentar blocos de texto, utilizando o editor de textos vi.
Para comentar algumas linhas:
:li,lf ! awk '{ print "\# " $0 }'
Onde:
li - Linha Inicial; lf - Linha Final; $0 - Indica 'toda' a linha.
Para li e lf, pode-se utilizar:
- um valor absoluto; - um 'ponto', para indicar a linha 'atual'; - '-n' para indicar as n linhas anteriores a linha atual; - '+n' para indicar as n linhas a partir da atual;
Exemplos:
Inserir a letra 'a' nas linhas 7,8,9,10,11,...,84:
:7,84 ! awk '{ print "a" $0 }'
Inserir o caractere '#' nas 10 linhas a partir da linha atual:
:.,+10 ! awk '{ print "\# " $0 }'
Inserir o caractere '#' nas 10 linhas anteriores a linha atual:
:-10,. ! awk '{ print "\# " $0 }'
Note que alguns caracteres precisam ser cotados.
Para comentar todas as linhas de um arquivo:
% cat file.txt | awk '{ print "# " $0 }' > file.txt.out
A utilização de $0 é feita no caso do script precisar incluir um caracter no início ou no final da linha, não sendo necessário alterar nenhum valor. No entanto, $0 indica 'todas as colunas' da linha, e estas colunas podem ser referencidas com $1 (coluna 1), $2 (coluna 2), $3 (coluna 3), $n (coluna n).
Exemplo, utilizando o ls:
Pega a lista dos arquivos de um diretório, ordena pelo tamanho em ordem crescente, seleciona as colunas 1, 5 e 9 (permissão, tamanho e nome) e exibe as 10 últimas linhas, ou seja, os 10 maiores arquivos. (pode parecer um exemplo ingênuo, mas é possível incrementá-lo para adequá-lo às necessidades de cada usuário.
% ls -la | sort +4n | awk '{ print $1 " " $5 " " $9 }' | tail -n10
Com isso é possivel construir script bastante complexos, utilizando as ferramentas disponíveis na maior parte das distribuições espalhadas por aí.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários