メイクファイルレシピの一部として、いくつかのテキストファイルの数行を繰り返し調整したいと思います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; \