Entendimento de um comando usando awk para ordenar partes de um arquivo

1. Entendimento de um comando usando awk para ordenar partes de um arquivo

Claudio Ract Costa
claudio_ract

(usa Red Hat)

Enviado em 16/11/2020 - 17:17h

Senhores,

Esses dias me deparei com uma solução bem interessante de ordenação de parte de um texto de um arquivo, usando AWK.
O comando funcionou perfeitamente mas não consegui entender como ele funciona.

O comando usado foi:

awk 'i {a[l++]=$0}
/^\(/ {print; i=1}
/^\)/ {n=asort(a); for(k=1; k<=n; k++){print a[k]} i=0; delete a; next}
!i' File


O texto do arquivo que foi usado no exemplo segue abaixo (a ideia é ordenar as linhas que estão entre os parênteses "(" e ")"


CREATE TABLE BBBBBB
(
ID bigint NOT NULL
NAME varchar(50)
CURRENCY varchar(3)
SYS_START timestamp NOT NULL
SYS_END timestamp NOT NULL
TS_ID timestamp NOT NULL
EXPORT int
)

CREATE TABLE AA
(
ID bigint NOT NULL
SYS_START timestamp NOT NULL
SYS_END timestamp NOT NULL
TS_ID timestamp NOT NULL
NAME varchar(100) NOT NULL
)


Minha dúvida principal é:
Nesse comando do AWK, por que tem o "i" no começo do comando e o "!i" no final ?
Como funciona essa lógica desse comando ?

Se alguém puder me detalhar para que eu possa aprender, ficarei muito grato.


Obrigado







  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts