連続した行を次に変更しようとしましたsed
。
sed -i -e '/string1/{N;s/string2/string2_replaced/;N;s/string3/string3_replaced}' file1
sed -i -e '/string1/{n;s/string2/string2_replaced/;n;s/string3/string3_replaced}' file1
ここで、file1 には以下が含まれます。
string1
string2
string3
私は続けてsed: unmatched '/'
。 file1の内容を次のように変更するには:
string1
string2_replaced
string3_replaced
それでは、string2とstring3は、連続した行にあり、string1に一致する行の直後にある場合にのみ置き換えられますか?
また、string2が正確にどこに表示されるか(どの行)はわかりませんが、string1の後に表示されることは確実な場合は、string2を検索して置き換える方法は何ですか?
答え1
/
次の最後の項目を見逃しましたs/string3/string3_replaced/
。
sed -e '/string1/{N;s/string2/string2_replaced/;N;s/string3/string3_replaced/}' file1
sed
すべての実装が同じ行で複数のコマンドをサポートしているわけではありません。移植性のために:{
}
sed -e '/string1/ {
N
s/string2/string2_replaced/
N
s/string3/string3_replaced/
}' file1