<
极客APP-每日一课笔记-如何用sed处理多行配置
>
上一篇

极客APP-每日一课笔记-为什么SQL语句使用了索引但还是慢查询
下一篇

下雪了

主讲 尹会生 金山西山居运维总监

使用场景举例

当配置项与值不在一行的情况时(想要替换listing配置项的false为true时),用sed的单行模式不太便于处理

<servlet>
  <init-param>
    <param-name>fake</param-name>
    <param-value>false</param-value>
  <\init-param>
  <init-param>
    <param-name>listing</param-name>
    <param-value>false</param-value>
  <\init-param>
<\servlet>

命令N(NEXT)

把当前行的下一行也加入到sed的模式空间中,组成一个多行模式

命令P(Print)

输出多行模式空间的内容,直到第一个换行符为止

命令D(Delete)

删除模式空间的第一个字符 一直到第一个换行符

在NPD三个指令内形成一个循环

sed -i ‘/listing/{N;s/false/true/;P;D}’ config.txt

Top
Foot