次のファイルがあります。
141.519
141.009
140.121
135.519
0
0
0
0
私はシェルスクリプトを書いており、0を含むすべての行を-1e + 10に置き換えたいと思います。
これまで私は次のことを試しました。
while read a
do
if [ "$a" == "0" ]; then
echo ${a//0/-1e+10}
#let a="-1e+10"
fi
done < $name.pitch.f0.ascii > $name.pitch.f0.ascii.replaced ;
ただし、結果として、すべての行が-1e + 10に置き換えられます。私は何が間違っていましたか?
ベストアンサー1
コードがありませんelse echo "$a"
。ただし、ループを使用する必要はありません。sed
ファイルを 1 行ずつ処理するには、次のようにします。
sed -i~ -e 's/^0$/-1e+10/' $name.putch.f0.ascii
-i~
拡張子を使用してバックアップを作成します~
。
s///
「代替する」という意味です。^
行の先頭と一致し、$
行の終わりと一致します。