Bash - Afixar um arquivo sem as linhas de comando

Dezembro 2016

Bash - Afixar um arquivo sem as linhas de comando

As vezes é util de afixar um arquivo sem ter que afixar uma enxurrada de linhas de comando que o acompanhem (em particular para os arquivos de configuração de nosso OS preferido;-) ), bem como derramando suas linhas brancas.

Pronto três maneiras de proceder.

Grep


A primeira com a ajuda de "egrep" (ou "grep -E"):
egrep -v '^(#|$)'  /etc/samba/smb.conf 

grep -E -v '^(#|$)'  /etc/samba/smb.conf
Ali o exemplo se contenta de não afixar todas as linhas para um quadrado (#) ou por um caractere de controle no final de linha dólar ($).

Se ficar mostrado que o delimitador de comentários seja colocado não no início da linha, mas em retração (espaço ou tabulação), ou que o arquivo misture outros caracteres delimitadores como o opnto e vírgula (;), nada lhe impede de embelezar sua expressão racional como segue::
grep -E -v '^(#|;|$|[ ]*#)' /etc/samba/smb.conf

Sed


A segunda com a ajuda de "sed" :
sed -e '/^[ ]*#/d' -e '/^$/d' /etc/samba/smb.conf
Elimina-se em primeiro as linhas que começam por um espaço quadrado, depois elimina-se todas as linhas vazias.
É claro, como no exemplo precedente você pode implementar seu comando incluindo outros motivos, como o ponto e vírgula, o que daria:
sed -e '/^[ ]*#/d' -e '/^[ ]*;/d' -e '/^$/d' /etc/samba/smb.conf

Perl


A terceira com a ajuda de "perl" :

Com efeito, trata-se sempre dos regex, é um utilitário que muda.
Que se trate de grep, egrep, sed, python, perl, etc. é sempre a regex que faz tudo.
Falta somente estudar a implementação das regex o motor utilizado pelos utilitários.
A saber, por exemplo, que um motor DFA - Deterministic Finite Automation - é mais rápido que um motor NFA - Nondeterministic Finite Automation - .
Mas , o motor NFA nos permite melhor orientar e dirigir a regx para obter o resultado esperado, então um ambiente de criatividade que não se encontra com um motor.
perl -ne 'print unless /^\s*[;\$#]|^$/' arquivo_config

Os comandos sed e grep utilizam a sintaxe das expressões regulares. Você poderá encontrar a sintaxe das expressões regulares. Você poderá encontrar complemento de informação para se familiarizar com esta noção neste endereço:
phpreg


Tradução feita por Ana Spadari

Veja também :
Este documento, intitulado « Bash - Afixar um arquivo sem as linhas de comando  »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.