awk 单行打印 SQL 表的列?

awk 单行打印 SQL 表的列?

假设我有这样的表:

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

输出应该类似于第二列:

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

生成这样的输出的 awk 命令是什么?

答案1

如果awk不是实质性要求,您可以将cut文件分成固定字节(并grep去掉空行):

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

答案2

我不是 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)}'

由于它是长度分隔字段,因此您可以通过读取“下划线”行 ( NR==3) 来获取字段的起始索引和长度。

如果您的 SQL 返回不止一行,那么您必须使用类似if( NR > 1 && NR <= x ).

相关内容