如果用于执行计算的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
为空,那么可以将输出重新格式化为由制表符分隔的四个零吗?