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

即它更改hellohi位于 with 行之后的行world(但不检查world完成替换的那些行。)

相关内容