我有下面有兩個條目多個文件:文件的代碼中添加多個文件號碼
$ cat file_01
Total capacity 3.4 TB
Capacity used 825.8 GB
輸出是兩行。第一行具有總容量,第二行是使用的容量。
這是一臺服務器的輸出,我希望它可以合併我的其餘服務器。
我想創建一個簡單的腳本,它將添加所有Total容量和所有使用的容量從多個文件並提供一個合併輸出。殼牌或perl是我正在尋找的。
任何方向,這將是非常有益的。
感謝
我有下面有兩個條目多個文件:文件的代碼中添加多個文件號碼
$ cat file_01
Total capacity 3.4 TB
Capacity used 825.8 GB
輸出是兩行。第一行具有總容量,第二行是使用的容量。
這是一臺服務器的輸出,我希望它可以合併我的其餘服務器。
我想創建一個簡單的腳本,它將添加所有Total容量和所有使用的容量從多個文件並提供一個合併輸出。殼牌或perl是我正在尋找的。
任何方向,這將是非常有益的。
感謝
假設1TB = 1000GB:
cat file* | perl -ne '
/.* (\d+.\d+) ([TG])B .* (\d+.\d+) ([TG])B/;
$x+=$1*($2==T?1000:1);
$y+=$3*($4==T?1000:1);
END{print "$x GB, $y GB\n"}'
UUOC獎項候選人? –
@JonathanLeffler以防萬一這是管道的一部分,並且正在動態創建。 – Bitwise
我試過你的代碼,我得到的輸出爲 0 GB,0GB – maneeshshetty
假設所有文件結核病報告(未經測試)
perl -lane '
$total += $F[2]; $used += $F[6];
END {print "total: $total; used: $used"}
' file*
如果您有不同的單位,可以考慮使用像Math::Units東西轉換例如,TB和GB之間。
下面應該做的伎倆:
awk '{ if ($4 == "GB") $3/=1000; s[FNR] += $3 } END { print "total: "s[1]" TB\nused: "s[2]" TB" }' file_*
FNR - 行號文件
cat file? | perl -ne '
chomp;
@x = split(/\s+/,$_);
$total{$x[-1]} += $x[-2];
while(<>){
chomp;
@x = split(/\s+/,$_);
$total{$x[-1]} += $x[-2];
};
for $m1 (keys %total) {
print "$m1 , $total{$m1}\n";
};
'
是大小總是以兆兆字節(或Tebibytes,TiB)表示,還是可以在GiB,MiB,KiB中?事實上,是基於小數還是基於二進制的大小? –
某些值以TB結尾,一些以GB結尾。我想要轉換成TB全部 – maneeshshetty