我有一个foreach循环的输出forms:
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与terminal
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
你可以使用sed来代替:
echo ... | sed 's/\(A[^ ]*[\t ]*\)\([^ \t]*[0-9][^ \t]*\)*.*/\1 \2/'
删除最后一列的一种方法是让awk认为有一个更少的字段:
awk -v OFS='\t' '{NF--; print}'