awkを使用して文字列を見つけて置き換え、文字列に基づいて計算を実行します。

awkを使用して文字列を見つけて置き換え、文字列に基づいて計算を実行します。

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.0gGBで示されている項目(例)をKBで示された対応する数字または1.0gに変換したいと思います。これらの項目を見つけて同等の計算値に置き換える1000000方法がわかりません。awk

ベストアンサー1

次のawkコマンドを実行する必要があります。

awk 'sub(/g$/,"",$2) {$2=1000000*$2}1' input.txt

これは末尾を "nothing"に置き換えて、2番目の列()が小文字で終わるかどうかを確認します$2(したがってフィールドを数値のみに減らす)。成功した場合(つまり、正常に実行された代替回数の戻り値がゼロでない場合)、フィールド値に1000000を掛けます。ggsub()

後続1のコマンドは、awk修正を含むすべての行を印刷します。

おすすめ記事