打印与命令行中的字符串匹配的列名

Nic*_*ick 10 bash awk argv

我想在awk或cut命令中输入字符串名称(即"COL2")并打印与该列标题字符串匹配的列.

数据文件如下所示:

COL1 COL2 COL3 COL4 COL5 COL6

a a b d c f

a d g h e f

c v a s g a
Run Code Online (Sandbox Code Playgroud)

如果我传入COL3,我希望它打印第三列,等等.我认为awk可能是最容易使用的东西,但切割也可以.我只是不确定如何去做这件事.

anu*_*ava 7

awk 1衬垫上面的问题(如果你有兴趣):

awk -v col=COL2 'NR==1{for(i=1;i<=NF;i++){if($i==col){c=i;break}} print $c} NR>1{print $c}' file.txt

awk -v col=COL3 'NR==1{for(i=1;i<=NF;i++){if($i==col){c=i;break}} print $c} NR>1{print $c}' file.txt
Run Code Online (Sandbox Code Playgroud)

只需使用-vcol=标志传递列名COL1,COL2,COL3等.

  • @lenzai:尝试多列的代码:`awk -v col1 = COL2 -v col2 = COL6'NR == 1 {for(i = 1; i <= NF; i ++){if($ i == col1) C1 = I; if($ i == col2)c2 = i;}} NR> 1 {print $ c1""$ c2}'file.txt` (2认同)