2017-08-08 49 views
0

我试图匹配我正在使用的CSV文件中的标题,然后是打印整列。根据标题匹配打印整个列

some.file:

col_1,col_2,col_3,col_4,col_5 
2333,4345,365678,54356,34443 

代码:

awk -F, 'NR==1{for(i=1;i<=NF;i++){if($i=="col_3")x=i;}} NR>1{if($x=="1")print;}' some.file 

当我运行此不过,我得到了一个空白的回报......

回答

2

您可以使用此awk

awk -F',' -v search="col_3" 'NR==1{for(i=1;i<=NF;i++){ if ($i == search) c=i } } c{print $c}' file 

输出:

col_3 
365678 

您可以通过使用search变量传递所需的列名awk

从你的例子:

awk -F, 'NR==1{for(i=1;i<=NF;i++){if($i=="col_3")x=i;}} x!=0{print $x}' file