SED ステートメントの浮動小数点変数の書式設定

SED ステートメントの浮動小数点変数の書式設定

メイクファイルレシピの一部として、いくつかのテキストファイルの数行を繰り返し調整したいと思いますtxt.in。特に、スペースで区切られた2つの数字のみを含む3行目を更新したいと思います。形式はでなければなりません0.00 0.00。したがって、これを実行できるかどうかをテストするために、makefileに次のコードを含めました。

# Makefile to test for-loop
SHELL=/bin/zsh

for:
    for k in 1 2 3; do \
        let n="$$k*0.25"; \
        let m="$$n+0.25"; \
        sed -i "3s/.*/$$n $$m/" txt.in; \
    done

これが0.7500000000 1.0000000000最終結果です。これを行うより効率的な方法があるかもしれませんし、それについて知りたいです。しかし、私が本当に知りたいのは、書式を正しく指定する方法があるかどうかです。

ベストアンサー1

パイプによる出力

sed 's/\([0-9]\{1,\}\.[0-9][0-9]\)[0-9]*\>/\1/g'

希望の形式を取得するには。事実上、あなたのsed宣言は次のように変更されます。

sed -i "3s/.*/$$n $$m/" txt.in | sed -i 's/\([0-9]\{1,\}\.[0-9][0-9]\)[0-9]*\>/\1/g' txt.in; \

おすすめ記事