Bash AWK,SED根据列名显示列

Bash AWK,SED根据列名显示列,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我正在编写一个shell脚本,其中包含很多SED和AWK命令。现在,我被困在一个无法继续前进的地方 例如:- 如果我运行下面的命令。它打印第一列 awk 'OFS="\t" {print $1;}' finename.txt 但是,是否有一种方法可以使用列名而不是列号打印特定列。我猜没有直截了当的方法,但应该有一些技巧来做到这一点 分离的示例数据选项卡 itemNumber Price Mango Apple Bannana 112201 purchased

我正在编写一个shell脚本,其中包含很多SED和AWK命令。现在,我被困在一个无法继续前进的地方

例如:- 如果我运行下面的命令。它打印第一列

awk 'OFS="\t" {print $1;}' finename.txt
但是,是否有一种方法可以使用列名而不是列号打印特定列。我猜没有直截了当的方法,但应该有一些技巧来做到这一点

分离的示例数据选项卡

  itemNumber  Price   Mango   Apple   Bannana
   112201      purchased   need-to-plan    purchased
   112202  55  yet-to-buy  yet-to-buy  purchased
   112202  67  need-to-plan    purchased   purchased
   112203  456 need-to-plan    need-to-plan    need-to-plan
   112203  33  need-to-plan    yet-to-buy  need-to-plan
   112204  456 need-to-plan    yet-to-buy  need-to-plan
   112204      yet-to-buy  purchased   need-to-plan
   112205  77  yet-to-buy  purchased   need-to-plan
   112205  99  yet-to-buy  purchased   yet-to-buy
   112206  0   yet-to-buy  purchased   yet-to-buy
像这样的? awk-vcol=Price'NR==1{colnum=-1;fori=1;i类似的东西? awk-vcol=Price'NR==1{colnum=-1;fori=1;i谢谢@Max Murphy

个人需要awk-f'',所以需要空格和| column-t

全文:

awk-F'-vcols=pkts,bytes,source,destination'NR==2{n=splitcols,cs,,;forc=1;c谢谢@Max Murphy

个人需要awk-f'',所以需要空格和| column-t

全文:


awk-F'-vcols=pkts,bytes,source,destination'NR==2{n=splitcols,cs,,;forc=1;cYou可能想添加-F'\t',因为数据似乎有一些空列,所以默认的空格分隔符将不会保留列索引。是的-F'\t'将这样做。像往常一样,您有很多选项。以制表符分隔的输入:BEGIN{IFS=\t}输出:BEGIN OFS=\t}并且都以{FS=\t}开头。但是-F是最短的,所以应该赢:-@MaxMurphy-太棒了。这正是我想要的。@meuh-谢谢你添加了它。我正要问:-@MaxMurphy-你知道如何用列名打印多个列吗?你可能想添加-F'\t',因为数据似乎有一些空列,所以默认的空格分隔符r将不保留列索引。是-F'\t'将这样做。像往常一样,您有很多选项。以制表符分隔的输入:BEGIN{IFS=\t}输出:BEGIN{OFS=\t}和BEGIN{FS=\t}.但是-F是最短的,所以应该赢:-@MaxMurphy-太棒了。这正是我想要的。@meuh-谢谢你加上它。我正要问:-@MaxMurphy-知道如何用列名打印多个列吗?