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