如何比较文件中的两个字段并使用awk打印具有数据的字段?

时间:2013-08-14 10:12:11

标签: bash awk solaris

我使用以下评论:

   awk -F "\"*_\"*" '{print ";189;" $5||$4 ";-6"}' file.txt

事情是field5可能是空的,所以在这种情况下我想显示field4中的内容,而不是空格。

但是在执行此评论时,输出将被截断为189;

那么如果它有数据我怎么打印field5,如果没有打印field4的那个?

2 个答案:

答案 0 :(得分:2)

请改用此格式:

awk -F "\"*_\"*" '{print ";189;" ($5 ? $5 : $4) ";-6"}' file.txt

另外,你真的需要两个“和* for -F?

答案 1 :(得分:0)

使用三元运算符:

print ($5 ? $5 : $4)

如果$5非零并且不是空字符串,则会打印$5的内容。否则,它将打印$4

的内容

如果第五个字段可能为零,那么您可以使用:

print ($5 != "" ? $5 : $4)