연속된 줄을 다음으로 바꾸려고 했습니다 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