Sedはパターンとファイルの終わりの間でパターンを置き換えます。

Sedはパターンとファイルの終わりの間でパターンを置き換えます。

~からSED:最後の行の後にテキストを挿入しますか? - UnixとLinuxスタックの交換$、sedの外で使用すると、置換がファイルの終わりを示すことを学びました。ファイルの終わりabcの前後に発生するすべてのイベントを置き換えるために、以下でこれを試しました。# Start123

パスワード:

file=Data.txt
Initial="# Start";
Final='\$'
orig="abc";
new="123"; 
sed -i -r -e "\!${Initial}!,\!${Final}!{s!${orig}!${new}!g}" ${file} ;

データ.txt

# Start

abc
abc

$

abc
abc

出力:

# Start

123
123

$

abc
abc

予想出力:

# Start

123
123

$

123
123

私は何を見逃していますか?$つまり、これがファイルの終わりを意味するとsedにどのように通知できますか?


$注:より安全な変数拡張のためにsed式に二重引用符を使用しているので、エスケープします。これが正しいことを願っています。これについてコメントしていただけますか?

答え1

これは動作します:(注:${Final}代わりに/${Final}/

file=Data.txt
Initial="# Start";
orig="abc";
new="123"; 
Final='$' # Line Number
sed -r -e "/${Initial}/,${Final}s/${orig}/${new}/g" ${file} 

関連情報