sed 명령에서 {n;s/...g;}의 의미

sed 명령에서 {n;s/...g;}의 의미

다음 명령을 실행하려고 합니다.
sed -i.bak -e "/world/{n;s/hello/hi/g;}" check.txt

check.txt의 내용:

 hello world  
 hello world  
hello at the last line world  
 hello world 1!!

받은 결과는 다음과 같습니다.

 hello world  
 hi world  
hello at the last line world  
 hi world 1!!

누군가 이것을 설명할 수 있나요?

답변1

중괄호는 명령을 그룹화하는 데에만 사용되므로 전체 내용은 다음과 같습니다.

/world/{ ... }      - on lines matching /world/, do the commands within {}
n                   - load next line (and print the current)
s/hello/hi/g        - substitute 'hi' for 'hello' on the _currently loaded_ line

즉, with 라인 뒤에 오는 라인 hello으로 변경됩니다(단, 교체가 이루어진 라인은 확인하지 않습니다 .)hiworldworld

관련 정보