我正在尝试执行以下命令:
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
即它更改hello
为hi
位于 with 行之后的行world
(但不检查world
完成替换的那些行。)