如何在输出的第2行开始插入0(0)?

问题描述 投票:0回答:2

我有一个小数据,结构是这样的

文件1

vol1 10GB 123434
vol2 55GB 231554
vol3 20GB 989765
vol4 17GB 099312

文件2

vol4 server1 099312
vol4 server2 099312
vol4 server3 099312
vol4 server4 099312

而我们的想法是输出如下数据。赋值为 size 到一个变量中,并将其插入到第一行,然后其余的应该是零。

size=`cat file1 |grep 099312 | awk '{print $2}'`


vol4 server1 17GB 099312
vol4 server2  0   099312
vol4 server3  0   099312
vol4 server4  0   099312

我不太确定这种方法是否正确,但现在我有点迷茫。

顺便说一下,文件2是动态的,它可以超过4行,但目标是一样的。size 应该只在第一行应用插入。

bash shell awk sed
2个回答
2
投票

另一个 awk

$ awk 'NR==FNR {a[$1]=$2; next} 
               {print $1,$2,a[$1],$3; 
                a[$1]=0}' file{1,2} | column -t

vol4  server1  17GB  099312
vol4  server2  0     099312
vol4  server3  0     099312
vol4  server4  0     099312

居中 "0 "需要额外的格式化,不知道是否需要。


1
投票

试试吧。

awk 'NR==FNR { vols[$1]=$2; next }
     { if ($1 in vols) {
         print $1, $2, vols[$1], $3
         delete vols[$1]
       } else {
         print $1, $2, "0", $3
       }
     }' file1 file2
© www.soinside.com 2019 - 2024. All rights reserved.