Abaixo está o formato de alguns dados da tabela contidos em um único arquivo:
;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;
(5436rowsaffected)
(returnstatus=0)
Returnparameters:
;;
;5436;
(1rowaffected)
;;;
;-------;-----------;
;grepkey;5436;
(1rowaffected)
OBSERVAÇÃO:Acima grepkey=5436
(Contagem dos registros presentes na tabela).
Abaixo está o resultado esperado:
1;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
2;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
5436;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;
Preciso dos dados no formato acima. Gostaria de prefixar o número da linha e excluir os dados adicionais presentes no final do arquivo, como contagem de registros na tabela, etc.
Além disso, gostaria de realizar o procedimento acima usando awk
.
Responder1
Não tenho certeza se entendi corretamente. Acho que você deseja adicionar o número da linha a cada linha e remover tudo após a primeira linha em branco. Nesse caso, isso será suficiente:
awk '{if($1){print NR$0}else{exit}}' file
Explicação
if($1){print NR$0}
: se esta linha tiver um 1º campo (uma forma simples de verificar se a linha está vazia), imprima o número da linha atual (NR
) e a linha$0
.else{exit}
: pare o script na primeira linha vazia.
Responder2
awk -v n=$( grep -oP '(?<=grepkey;)\d+' file ) 'NR <= n {print NR ";" $0}' file
Aqui eu uso um comando GNU grep para extrair o valor "grepkey" do arquivo e, em seguida, um script awk para imprimir as primeiras "n" linhas do arquivo, com o número da linha anexado.