我有两个文件,一个有磁盘和它的大小,另一个有文件系统和它所需的大小信息。
磁盘-信息:
sda 40G
sdb 100G
sdc 100gFs-info:
/a 50G
/b 40G因此,我要寻找的是基于fs系统总大小(40 +50)=90G,我需要多少磁盘从磁盘信息列表使用和打印他们的名字(在本例中,我需要sda和sdb)。
我试过:
awk '{sum+2} (NR%1==0) {if ( $sum -ge 90 ) {print $1} }' disk-info但是它正在打印出所有的磁盘,而不仅仅是sda和sdb。任何帮助,如果能解决这个问题,或者用新的代码来实现这个目标,我们将不胜感激。
发布于 2015-05-22 10:09:48
据我理解,您希望从两个文件中计算第二列的和,并从disk-info输出最小行数,从而达到来自fs-info的和。
要做到这一点,你可以使用这样的东西:
$ awk '{sub(/[gG]$/,"")}NR==FNR{fs+=$2;next}disk<fs{print $1}{disk+=$2}' fs-info disk-info
sda
sdbsub从每一行的末尾删除"G"/"g“(当然,这假定您的所有大小都是GB的)。NR==FNR仅适用于第一个文件,其中总记录号等于当前文件的记录号。disk仍然低于fs,则打印第一个字段。发布于 2015-05-22 11:27:36
就像这样:
awk 'BEGIN {sum=90} {if ( sum > 0 ) {sum-=$2; print $1} }' disk-info结果是:
sda
sdb(另一个不同的课题是如何计算"90",但这部分在你原来的帖子中也被排除在外,因此,我想你已经解决了)。
https://stackoverflow.com/questions/30393395
复制相似问题