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
ディスカッション
コメント一覧
まだ、コメントがありません