我有一个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,因为在这种情况下第二列是空白的。我该如何解决这个问题?
答案 0 :(得分:2)
打印前检查字段数:
$ 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
答案 1 :(得分:1)
您可以改用sed:
echo ... | sed 's/\(A[^ ]*[\t ]*\)\([^ \t]*[0-9][^ \t]*\)*.*/\1 \2/'
答案 2 :(得分:0)
删除最后一列的一种方法是让awk认为减少1个字段:
awk -v OFS='\t' '{NF--; print}'