zuier 发表于 2018-8-26 07:28:33

shell sed 笔记

  sed并不真正保存文件,可以先保存在临时文件,然后拿临时文件来覆盖原文件
  如果需要直接修改,加-i参数
  sed 样式命令 文件
  sed '3,6/p' file1            //显示3-6行
  sed '3,6/!p' file1            //不显示3-6行
  sed '/\{3\}/p'          //显示有3位数字的行
  sed '/^$/d'       /etc/xx.conf         //删除空行
  sed '^#/d'    /etc/xx.conf            //删除注释行
  sed -n                     //
  sed -i '/La/aOo' file1   //查找La的行,将第一个La后增加Oo一行
  sed -i '/La/iOo' file1   //查找La的行,将第一个La前增加Oo一行
  sed -n 's/La/Oo/p' file1    //查找La的行,将第一个La替换为Oo
  sed -n 's/La/Oo/pg' file1   //查找La的行,将所有La替换为Oo
  sed 's/...$//' file1      //删除每一行的最后3个字符
  sed -n '/AAA/s/234/567/p' file1//查找包含AAA的第一行,将234替换为567
  sed -n '/AAA/,/DDD/s/234/567/p' file1//查找包含AAA到DDD的第一行,将234替换为567
  sed -e's/root/shrek/g' /etc/passwd
  //-e 表示后面接受命令,s 替换,d 删除,
  -e 一行可以多个命令 比如
  sed -e'/^$/d'   -e '^#/d'       /etc/xx.conf         //删除空行
  -n 默认不输出
  sed -e's/\/shrek/g' /etc/passwd将root这个单词替换为shrek
  echo 's/abc/com/g' > file
  echo's/com/org/g' >>file
  sed -f file xx.conf   //-f 指定脚本文件
  sed -e '/^#/d;/^$/d'abc.conf 显示未注释行
  在Sed中使用变量
  一般在sed 中替换都用单引号,如下边
  sed -in-place ‘s/8080/8001/g’ /home/work/server.xml
  但是如果需要把8001改成变量,如
  sed -in-place ’s/8080/$port/g‘ /home/work/server.xml
  这样就不成功。
  此时需要把单引号改成双引号,如下边例子
  $port=8001
  sed -in-place "s/8080/$port/g" /home/work/server.xml

页: [1]
查看完整版本: shell sed 笔记