다음 명령을 실행하려고 합니다.
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
으로 변경됩니다(단, 교체가 이루어진 라인은 확인하지 않습니다 .)hi
world
world