Bashで0を含む行を繰り返します。

Bashで0を含む行を繰り返します。

次のファイルがあります。

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///「代替する」という意味です。^行の先頭と一致し、$行の終わりと一致します。

おすすめ記事