Awk one-liner для печати столбца таблицы SQL?

Предположим, что у меня есть таблица вроде:

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

Вывод должен быть как столбец 2:

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

Какова будет команда awk для генерации вывода следующим образом?

Я не awk-гуру, но если ваш вывод всегда один и тот же (я имею в виду, что вторая строка – заголовки, а третья строка содержит результаты), вы можете использовать что-то вроде этого:

 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)}' 

Поскольку это поля с разделителями по длине, вы можете получить начальный индекс и длину поля, читая строку «underline» ( NR==3 ).

Если ваш SQL возвращает более одной строки, вам нужно будет использовать что-то вроде if( NR > 1 && NR <= x ) .

Надеюсь, поможет…

Если awk не является существенным требованием, вы можете cut файл по частям на фиксированных байтах (и grep в пустых строках):

 cut -b 37-47 data | grep -v '^$'