而不是在AWK中将null打印为零 [英] Instead of null print zero in awk

查看:39
本文介绍了而不是在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆