我有一个形式的foreach循环的输出:

ABC123603LP    44Bq    AAAA
ABC123603P     3BU     AAAA
ABC123603ZZP           AAAA
ABC123604DP    3BU     BBBB
ABC123604LP    44Bq    BBBB
ABC123605AP    4q      CCCC
ABC123605DP    33BGU   CCCC
ABC123606AP    35Bjq   DDDD
ABC123606DP    4B      DDDD

从这我希望将第1列和第2列打印到终端
echo ... | awk '{print $1, $2}'

但是,第三行和其他行将打印ABC123603ZZP AAAA,因为在这种情况下第二列为空白。我该如何解决?

最佳答案

打印前检查字段数:

$ awk 'BEGIN {OFS="\t"}{ if (NF==2)  print $1; else print $1, $2}' file
ABC123603LP     44Bq
ABC123603P      3BU
ABC123603ZZP
ABC123604DP     3BU
ABC123604LP     44Bq
ABC123605AP     4q
ABC123605DP     33BGU
ABC123606AP     35Bjq
ABC123606DP     4B

关于linux - 当列偶尔为空时,awk应对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13969984/

10-11 23:17