如果输入文件是expty,请重新格式化输出

时间:2017-03-19 21:28:05

标签: awk

如果用于执行计算的awk中包含数据,则下面的file效果很好。如果file为空或0KB,则输出不正确。我试图在bwlow中设置一个条件,检查file是否为空,如果file不为空,则输出保持不变,但如果file为空则输出重新格式化为4个零的所需输出tab-delimited。我尝试这样做是在# check if empty下面。谢谢你:)。

AWK

awk '
  # print from stored values
  function prt(){
    print p1 ":" (p6start==1 ? p2 : p2+p6start) "-" p2+p6, "\t" p5
  }
  ($4!=p4 || $6!=p6+1) {
    # new sequence, print the previous sequence
    if (NR>1) prt()
    p6start=$6  
  }
  {
    # store the values that we need later
    p1=$1
    p2=$2
    p4=$4
    p5=$5
    p6=$6
  }
  END { prt() }
' file | awk -F"[:-]" '
  { print $1 "\t" $2 "\t" $3 "\t" $4}
' > output # make low coverage
# check if empty
if [ -s aFile ]; then  
else  
  output={ print "0     0     0     0" }
fi 

所需输出(如果文件为空)

0     0     0     0      --- 4 zeros seperated by tabs

如果file不为空,它将如下所示,输出将如预期一样。但是,如果file为空,并且看起来不像下面那样需要重新格式化输出。非常感谢你:))

文件

chr2    50573818    50574097    chr2:50573818-50574097  NRXN1   267 2

修改

使用上面file作为awk输出的输入将是:

输出

chr2    50574085    50574085    NRXN1

这是预期的,并且假设file已相应格式化。如果file为空且这些字段不存在,则awk会生成与预期不同的输出。因此,如果file为空,那么可以将输出重新格式化为由制表符分隔的四个零吗?

0 个答案:

没有答案