Awk one-liner para imprimir coluna da tabela SQL?

0

Suponha que eu tenha uma tabela como:

This is first line
name                                minimum     maximum     config_value 
----------------------------------- ----------- ----------- ------------ 
some text goes here for sample                0           1            0 
Output Ends

A saída deve ser como a coluna 2:

minimum    
----------- 
          0

Qual será o comando awk para gerar a saída assim?

    
por snoop 07.04.2015 / 09:12

2 respostas

1

Eu não sou nenhum guru do awk, mas se sua saída é sempre a mesma (quero dizer, segunda linha é cabeçalhos e terceira linha contém resultados), você pode usar algo assim:

cat /tmp/test.txt | awk 'NR==2 {headers=$0; start=0; len=0} NR==3 { start=index($0," "); len=length($2)+1; print substr(headers,start,len) ; print substr($0,start,len)} NR==4 {print substr($0,start,len)}'

Como os campos delimitados por tamanho, você pode obter o índice inicial e a extensão do campo lendo a linha "sublinhado" ( NR==3 ).

Se o seu SQL retornar mais de uma linha, você precisará usar algo como if( NR > 1 && NR <= x ) .

Espero que ajude ...

    
por 07.04.2015 / 10:05
1

Se awk não for um requisito substancial, você poderá cut do arquivo em partes em bytes fixos (e grep de linhas vazias ausentes):

cut -b 37-47 data | grep -v '^$'
    
por 07.04.2015 / 10:21

Tags