$ sed -i “/datadir=/ a text_test”    filename              //搜索含有datadir=的行下面插入 text_test
$ sed -i “/datadir=/ i text_test”    filename            //搜索含有datadir=的行上面插入 text_test
$ sed -i “/datadir=/ i text_test \ntest2”     filename    //搜索含有datadir=的行上面插入两行 text_test和test2

$ sed -i “s/datadir=/text_test/g”   filename      //(g)全局(s)替换datadir=为text_test

$ sed -i “/datadir=/ c text_test”    filename     //含有datadir=的整行替换为 text_test
$ sed -i s/^ldap_host.*$/text_test/   filename    //ldap_host 开头的整行替换为 text_test

$ sed -i ” 66 a hello”    filename                //66行后插入hello
$ sed -i "/^SELINUX/s/enforcing/disabled/" /etc/selinux/config           // 替换指定行的指定字符

$ sed -i.bak s/test/TEST/g test.txt            //替换之前先把 test.txt 复制为 test.txt.bak,然后再搜索替换

$ sed -n '/07\/May\/2021:21:21:*/,/07\/May\/2021:21:22:*/p' access.log-20210508             //查询某个时间段的日志

$ sed -n '/07\/May\/2021:21:21:*/,/07\/May\/2021:21:22:*/p' access.log-20210508 > access.log       //导出某个时间段的日志

$ sed -i '3~2d' test.txt          // 从第3行开始,每隔一行删除,即删除 3,5,7... 行
$ sed -i '4,8d' test.txt          // 删除4-8 行
$ sed -i '$d' test.txt            // 删除最后一行
$ sed -i '/^$/d' test.txt         // 删除所有空白行
$ sed -i '/test/,$d' test.txt     // 删除从匹配行到最后一行
$ sed -i '/test/,+2d' test.txt    // 删除匹配行和之后的两行

注意:-i 参数,会直接修改原文件,操作需谨慎。可以先把 -i参数去掉执行,看一下效果。

1. 实例

// 创建示例文件

$ cat > test.yml <<EOF
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: controller-default
    app.kubernetes.io/name: prometheus-operator
    app.kubernetes.io/version: 0.60.1
  name: test
  namespace: default
EOF

// 将 namesapce: default 替换为 namespace: monitoring 。

$ sed "s#namespace:.*#namespace: monitoring#g" test.yml
作者:jackzang  创建时间:2022-10-20 11:30
最后编辑:jackzang  更新时间:2024-10-31 11:07