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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts