3つの列を持つテーブルファイルがあります。
5565 35824 58.8
5713 67404 94.1
5716 64456 94.1
5718 60492 94.1
5724 57588 88.2
5718 844188 75.0
5757 903388 75.0
5724 871828 68.8
5565 1.0g 43.8
5565 1.3g 37.5
5718 878060 6.2
中間列はKB単位のメモリです(top
コマンドのRSS列にあります)。
1.0g
GBで示されている項目(例)をKBで示された対応する数字または1.0g
に変換したいと思います。これらの項目を見つけて同等の計算値に置き換える1000000
方法がわかりません。awk
答え1
次のawk
コマンドを実行する必要があります。
awk 'sub(/g$/,"",$2) {$2=1000000*$2}1' input.txt
これは末尾を "nothing"に置き換えて、2番目の列()が小文字で終わるかどうかを確認します$2
(したがってフィールドを数値のみに減らす)。成功した場合(つまり、正常に実行された代替回数の戻り値がゼロでない場合)、フィールド値に1000000を掛けます。g
g
sub()
後続1
のコマンドは、awk
修正を含むすべての行を印刷します。