menu

sed

明确几个概念:

  • script,就是 commands -e 参数指定的文本
  • circle,循环。sed 读取一行,并执行 script 就是一次循环。
  • pattern space,存放 sed 每个循环产生的数据,在下个循环前清空,数据每次循环结束前都会打印出来,除非指明 -n
  • host space,全局存储,循环间共享

script 由多个 command 构成,command 之间用;\n分隔。aci 不能用 ; 分隔

command 的语法: [addr]X[options]

[addr]相当于条件,只有当前行满足条件,才会执行相应的命令。其中 X 就是单个字符的 sed 命令,命令大体上就是操作 pattern space 和 host space。

多 script 多 command 效果都是一样的:

 sed '/^foo/d ; s/hello/world/' input.txt > output.txt

 sed -e '/^foo/d' -e 's/hello/world/' input.txt > output.txt
keyboard_arrow_up