而不是在AWK中将null打印为零 [英] Instead of null print zero in awk
本文介绍了而不是在AWK中将null打印为零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有问题.这是我的剧本
I have a problem. This is my script
#!/bin/bash
for index in {1..100} # I do this script on 100 files, that is s why I use for loop
do
sort -k2,2 -k1,1 eq9_x4_$index.ndx |
uniq -c |
uniq -f2 -c |
awk '
($1==1 && $2==4) {inner+=6}
($1==2 && $2==1) {inner+=3; outer+=3}
($1==2 && $2==2) {inner+=2; outer+=4}
($1==3 && $2==1) {inner+=1; outer+=5}
($1==4 && $2==1) {outer+=6}
END{print inner, outer}' >> inner_outer_water_bridges_x4.txt
done
它计算水桥和打印总和(内部和外部)这是我的输出文件的一部分,而不是
It counts water bridges and print sum (inner and outer) This is part of my output file and instead of this
9 15
2 16
8 10
4 14
6
5 25
2 10
6
我想要这个
9 15
2 16
0 0
8 10
4 14
0 6
5 25
2 10
6 0
该怎么做?awk中有什么好的解决方案吗?
How to do this is there any good solution in awk?
推荐答案
使用三元运算符,请尝试以下操作.无法测试它,因为此处仅提供了代码示例.
With ternary operator try following. Couldn't test it since only code samples provided here.
#!/bin/bash
for index in {1..100} # I do this script on 100 files, that is s why I use for loop
do
sort -k2,2 -k1,1 eq9_x4_$index.ndx |
uniq -c |
uniq -f2 -c |
awk '
($1==1 && $2==4) {inner+=6}
($1==2 && $2==1) {inner+=3; outer+=3}
($1==2 && $2==2) {inner+=2; outer+=4}
($1==3 && $2==1) {inner+=1; outer+=5}
($1==4 && $2==1) {outer+=6}
END{print (inner?inner:0), (outer?outer:0)}' >> inner_outer_water_bridges_x4.txt
done
这篇关于而不是在AWK中将null打印为零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文