以前にインスタンスがない場合は、abc
すべてのインスタンスを置き換えたいと思います。123
https://
パスワード:
file=Data.txt
Initial="# Start";
orig="abc";
new="123";
Final="$" # Line Number
sed -r -e "/${Initial}/,${Final}s/${orig}/${new}/g" ${file} # Final doesn't accept $
データ:
# Start
abc.md
https://abc.md
The path is https://abc.md for abc.md
The path for abc.md is https://abc.md
予想出力:
# Start
123.md
https://abc.md
The path is https://abc.md for 123.md
The path for 123.md is https://abc.md
この目標をどのように達成できますか?
注:また、2つの間にパターンがある可能性があることを示すために${Initial}
andを使用する必要があります。${Final}
この回答この事件には該当しないThe path is: https://abc.md abc.md
ベストアンサー1
あなたが探しているもの否定的に後ろを振り返って、サポートされていないsed
、awk
サポートされていません。たとえば、次のことをお勧めしますperl
。
file=Data.txt
export Initial="# Start"
export orig="abc"
export new="123"
export Final="5"
perl -pe '
$flag=1 if /$ENV{Initial}/;
s,(?<!https://)$ENV{orig},$ENV{new},g if $flag;
$flag=0 if $. == $ENV{Final};
' $file