sedコマンドで小数点以下を切り捨て

curl で集計結果した結果が表示されるHTMLページより数字を取ってきていますが、ブラウザだと小数点を切り捨てていた数字で反映されていますが、curl だと小数点以下を切り捨てられないで取得しています

sedコマンドで小数点以下を切り捨てる場合

sedコマンドで以下のようにすれば小数点以下を切り捨てられます。以下では小数点以下2桁で切り捨ています

$ sed -E 's/([0-9]+\.[0-9]{2})[0-9]*/\1/g' input.html > output.html

コマンド詳細

  • ([0-9]+\.[0-9]{2})[0-9]*
    • ([0-9]+\.[0-9]{2}) → 整数部 + 小数点以下2桁 をキャプチャ
    • [0-9]* → それ以降の小数点以下の桁をすべて削除
  • \1 → キャプチャした部分のみを出力(小数点以下2桁まで)

awkコマンドで小数点以下を四捨五入する場合

awkコマンドで、切り捨てではなく四捨五入する場合は以下となります

$ awk '{ gsub(/[0-9]+\.[0-9]+/, sprintf("%.2f", $0)) }1' input.html > output.html

コマンド詳細

1. awk '{ ... }' input.html > output.html

  • awk を使って input.html を処理し、その結果を output.html に書き出す。
  • '{ ... }' の中に処理内容が書かれている。

2. gsub(/[0-9]+\.[0-9]+/, sprintf("%.2f", $0))

🔹 gsub(正規表現, 置換後の値)
  • gsub()全文字列に対して検索と置換を実行 する関数。
  • 最初の引数(/[0-9]+\.[0-9]+/)は検索対象の正規表現
  • 2番目の引数(sprintf("%.2f", $0))は置換後の値
🔹 /[0-9]+\.[0-9]+/(検索対象の正規表現)

この正規表現は 小数点を含む数値 を探します。

  • [0-9]+ → 1つ以上の数字(整数部)
  • \. → 小数点
  • [0-9]+ → 1つ以上の数字(小数部)
  • 例:
    • 3.141592
    • 100.0001
    • 0.9876
    • 1.0

スポンサーリンク

0
0