Shell 基础之sed

实战演练

原始文件如下:

mongodb:
  host: 192.168.1.2,192.168.1.3,192.168.1.4
  host: 192.168.1.2,192.168.1.3,192.168.1.4
  passwd: ""
  port 27017

redis:
  host: 192.168.1.2,192.168.1.3
  passwd: ""
  port: 6379

mysql:
  host: 192.168.1.2,192.168.1.3
  passwd: ""
  port: 3306
匹配到了字符串的下一行进行替换。

n: 表示next ,也就是下一行的意思

## 
sed "/mongodb/{n;s/192.168.1.2,192.168.1.3,192.168.1.4/master.qq.com/;}" common.yaml
匹配到了字符串的下的第2行进行替换。
##  输入两个n即可,如果是下的第3行用3个n
sed "/mongodb/{n;n;s/192.168.1.2,192.168.1.3,192.168.1.4/master.qq.com/;}" common.yaml
匹配到了字符串的下面连续3行进行替换。
##
sed -E '/^mongodb/,+3 s/192.168.1.2,192.168.1.3,192.168.1.4/192.168.1.2/' common.yaml 

## 或者用awk处理
awk 'n-- {sub(/192.168.1.2,192.168.1.3,192.168.1.4/, "192.168.1.2")} /^#mongodb/ {n=3} 1' /etc/confd/common.yaml 

你可能感兴趣的:(Linux/Shell,集锦,sed)