linux 中 sed命令

什么时候使用该命令?
  • 对文本进行编辑的时候,编辑包括 "增, 删, 改"
    • 增  -添加内容
    • 删  -删除内容d
    • 改  -如把内容a修改为内容b, 即替换 用到命令 sg
 
  1. 定义: 文本编辑器-(流媒体编辑器)
    • 特点: 命令方式编辑,而不是在vim里边
  2. 格式
    • sed [参数] '处理规则' 操作对象路径
  3. 参数
    • -i :   即时编辑
    • -f :   匹配文件内规则
    • -r :  支持拓展正则
    • -e :允许多项编辑
    • -n :  取消默认输出的显示
  4. 定位
    1. 数字定位
      • sed '3d' 4.txt
      • sed '2,3d' 4.txt
    2. 正则定位
      • sed '/^g/d' 2.txt
    3. 数字和正则定位
      • sed '3,/^g/d' 2.txt
    4. 正则正则定位
      • sed '/^g/,/^j/d' 2.txt
  5. 编辑模式(至少与-i参数配合使用)(使用见操作演示)
      • a 在某行的下一行添加一行内容
      • i 在某行的上一行添加一行给内容
      • r 把当前文件内容添加到另一文件的某行后边
      • w 某文件指定行内容覆盖写入到另一文件
      • d 删除指定内容
      • c 替换当前行内容
      • y 替换文本某行内容的某些字符
      • s 替换文本中所有行的第一个xxx字符串
      • sg 替换文本中所有的a字符串为b字符串
      • sgi 中i 忽略大小写
    • 输出
      • p 打印指定内容
  6. 案例
    1. 将nginx.conf中的注释行全部去掉
      • sed '/^ *#/d' /etc/nginx/nginx.conf
    2. 将nginx.conf中每一行之前增加注释
      • sed 's/.*/# &/g' /etc/nginx/nginx.conf
        • & :代表前面匹配到的内容
    3. 一键修改本机的ip
      • 192.168.15.100 ---> 192.168.15.101
      • 172.16.1.100   ---> 172.16.1.101
      • sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
    4. 将/etc/passwd中的root修改成ROOT
      • sed -i 's#root#ROOT#g' /etc/passwd
    5. 删除以#开头的行
      • sed -i '/^#/d' 2.txt
    6. 删除含#的行
      • sed -i '/#/d' 2.txt
    7. 删除以#开头的行的#号
      • sed -i 's/^#//g' 2.txt(把开头的#匹配成空)
    8. 将文件中的Hello World 替换成 World Hello
      • sed -i 's/Hello World/World Hello/g' 文件路径
      • awk '{print $2,$1}' 7.txt (虚假替换-显示替换)
    9. 删除一个文本中所有的数字
      • 思路: 将文件中所有的数字替换曾空
        • sed -i -r 's/[0-9]+//g' 文件路径
      • 虚假删除
        • cat 2.txt | tr -d '[0-9]+'
---------
操作演示
---------
 
模式d 删除第几行
-e 多项编辑
参数-n 取消sed 处理后的显示
参数p 
打印
参数-i 
就地编辑
模式d中
 删除文件中含xxx内容的行
参数-f 匹配文件内规则
上图虚假删除验证 
    加-i 参数 真正删除
模式d中
 虚假删除文件中含xxx的行
模式d中
 真正删除含b的行
模式d中
 单正则 删除(删除以xxx开头的行)
模式d中
多方式删除 
a 数字与正则
b 数字与数字
  • sed '2,3d' 4.txt
c 正则与正则
编辑模式a 
在某行的下一行虚假添加内容
    真实添加 加-i 参数
编辑模式c 
替换某行内容
编辑模式i 
新增一行(在当前行的上一行)
编辑模式r 
把当前文件内容添加到另一文件的某行后边
编辑模式w 
某文件指定行内容覆盖写入到另一文件
编辑模式y 
替换文本某行内容的某些字符
编辑模式s 
虚假替换文本中所有行的第一个xxx字符串
    真实替换加-i参数
编辑模式sg
替换文本中所有的a字符串为b字符串
编辑模式sgi
s///g中忽略大小写
 
 
posted @ 2021-12-21 19:17  tslam  阅读(245)  评论(0编辑  收藏  举报