GBをTBに変換するスクリプト


0

以下のリストのような(複数の)ファイルがあります。TB単位の値とGB単位のファイルの両方を持つものはほとんどありません。これで、ファイル出力が明確に表示されている場合、合計容量と使用容量の2つの行があります。awkを使用してこれを行うと、両方の行を個別に加算できますが、GB単位はほとんどありません。値がGBまたはTBであるかどうかをチェックするスクリプトを作成できますか。GBである場合はTB(1024)に変換します。

[root@localhost maneesh]# cat server1.txt
Total capacity                   2.0 TB
Capacity used                    735.23 GB
[root@localhost maneesh]#

基本的に、最後にすべての値をTBで表示する必要があります。

これに関する助けをいただければ幸いです。


これまでに何ができましたか?どこで助けが必要ですか?
12

すべてのサーバーの両方の値を加算できるawkスクリプトがあります。私は、私は、容量使用行がGBである少数のサーバ持っているように、間違った番号を取得されることを使用している場合
maneeshshetty

私が考えることができる1つの簡単な解決策があります-それがあなたのために働くなら答えとして追加します-cat server * .txt | grep -i GBはGBを持つ値をリストします-あなたはおそらく別の出力にリダイレクトできますファイル。TBの人も同様です。変換後、両方の合計を追加できます。
12

1
awkのセットアップがあるので、なぜawkでifステートメントを実行してチェックできないのです$3か?
nerdwaller

1
@maneeshshetty:どのソフトウェアが作成されましたserver1.txtか?
アキラ

回答:


3

あるかどうかを確認し、ある場合$4は1024でGB割ることができ$3ます。infileに含まれている場合:

Total capacity                   2.0 TB
Capacity used                    735.23 GB

次のようなことができます(parse.awk):

/Total capacity/ { if($4 == "GB") $3 /= 1024; tot  += $3 }
/Capacity used/  { if($4 == "GB") $3 /= 1024; used += $3 }

END { print "Total: " tot " TB, Used: " used " TB" }'

そして、次のように実行すると:

awk -f parse.awk infile infile

あなたが得る:

Total: 4 TB, Used: 1.436 TB

@ Thor- awkコードをありがとう。それは私のために働いた。無効な文字として表示されていた 'を削除するだけでした。私は今END {print "Total:" tot "TB、Used:" used "TB"}として
置きました
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.