msoliver
(usa Debian)
Enviado em 19/01/2019 - 18:36h
hrcerq escreveu:
Mauriciodez escreveu:
[...]
Esse ORS resolveu o problema, estava excluindo todas as linhas em branco ...
Mais duas coisas ..
1 - Explica esse AWK seu pra gente entender !!!
Bom, eu acho que já expliquei a parte do next. Mas vou detalhar um pouco mais:
Em awk, como você deve saber, você pode listar uma ou mais expressões regulares, e as ações que serão aplicadas para cada uma. Cada linha (ou melhor, cada registro, pois o delimitador do registro pode variar, como ocorreu no seu caso) vai ser lida em sequência, e se ela bater com alguma regra (alguma das expressões regulares), aquela ação será aplicada.
Se uma linha bater com mais de uma regra, as ações de cada regra serão aplicadas para aquela linha. Aí entra o comando
next. Se o comando next é chamado, então as regras seguintes não são aplicadas para aquele registro. Em vez disso, o próximo registro será lido.
A ausência de expressões regulares significa que o registro será processado independente do que ele tiver. Então o comando print usado em seguida será aplicado para todos os registros (menos aqueles que passaram primeiro pela regra do $VAR e consequentemente chamaram next).
Sobre o ORS, essa variável serve pra definir o delimitador de registros do
output do programa, diferente do RS que define o delimitador de registros do
input. Pra que a saída não concatenasse tudo, tive que incluir essa regra.
2 - Tem um parâmetro para modificar o arquivo, qual é ele que não lembro ??? [...]
O AWK não modifica os arquivos de input. Ele apenas processa e gera uma saída. Pra modificar, você poderia usar o sed (se usar a opção -i ele altera o arquivo em vez de gerar uma saída nova).
---
Atenciosamente,
Hugo Cerqueira
Devuan -
https://devuan.org/
Boa noite Hugo.
Contrariando a sua afirmação...
O awk altera arquivos, requer o gawk instalado.
Segue:
awk -i inplace 'BEGIN{RS="\n\n"} $1!~/a/ {print $0"\n"}' texto