AWKを使用してラインを減算する方法を理解しようとしています。たとえば、入力ファイルが次のとおりだとします。
30
20
出力は次のようになります。
10
テストとして、「使用済み」メモリ列を次のように計算しようとしています。
$ cat /proc/meminfo
だから今私はこれを書きました:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
-- Here comes the calculation using AWK
私は以下を試しました:
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}'
しかし、これは私にデータの最後の行を与えるだけです。
有効な解決策を見つけましたが、それが最適な解決策ではないかと思います。私のすべてのコーディング経験から、行数をハードコーディングするのはひどいことがわかります:P
$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk '{print $2}' | awk 'NR == 1{s=$0} NR == 2 {s=s-$0} END {print s}'
line1_$2 - line2_$2 - lineN-$2
どうでしょうか?最初の2つの連続する行だけを減算しますか?