次のコマンドを実行するスクリプトがあります。
pv -s `du -sb file1.data | awk '{s += $1} END {print s}'`
次のエラーが発生します。
pv: -s: integer argument expected
したがって、このコマンドを実行すると、du -sb file1.data | awk '{s += $1} END {print s}'
出力は次のようになります。
1.03131e+10
それでは、この問題をどのように解決するのですか?
答え1
printfを使ってフォーマットします。
du -sb file1.data | awk '{s += $1} END {printf "%d\n", s}'
%ld
または、非常に大きな数字が必要な場合があります。
du -sb file1.data | awk '{s += $1} END {printf "%ld\n", s}'
これが失敗した場合(FreeBSDで1e32などの数字でテストしたように)、次のことを試してください。
du -sb file1.data | python -c $'import sys\nt=0\nfor line in sys.stdin:\n t += int(line.split()[0])\nprint(t)'