Linux 行文本处理工具sed

sed(stream editor)是Linux和Unix系统中非常强大的文本处理工具,它可以对文本进行过滤和转换。sed以行为单位处理文本,可以通过读取输入文件(或标准输入),应用一系列的编辑命令,然后将结果输出到标准输出(通常是屏幕)或文件中。

基本语法

sed [选项]... {脚本-地址} {命令} [输入文件]...
  • 选项sed命令的选项用于控制其行为,如-i用于直接修改文件内容。
  • 脚本-地址:指定要应用命令的行号或模式。如果没有指定,命令将应用于所有行。
  • 命令:要执行的sed编辑命令。
  • 输入文件:要处理的文件名。如果没有指定输入文件,sed将从标准输入读取数据。

常用命令

  • s/查找的文本/替换的文本/标志:替换文本。标志可以是g(全局替换),i(忽略大小写)等。
  • d:删除指定的行。
  • p:打印指定的行。
  • a\text:在指定行后追加新文本。
  • i\text:在指定行前插入新文本。
  • c\text:用新文本替换指定行。

示例

  1. 替换文本:将文件example.txt中所有的"apple"替换为"orange"。

    sed 's/apple/orange/g' example.txt
    

    注意:此命令不会修改原文件,只是将结果输出到标准输出。

  2. 直接修改文件:将文件example.txt中所有的"apple"替换为"orange",并直接修改文件内容。

    sed -i 's/apple/orange/g' example.txt
    

    注意:-i选项用于直接修改文件。根据sed的版本,可能需要指定一个扩展名作为备份,如-i.bak

  3. 删除行:删除文件example.txt中所有包含"banana"的行。

    sed '/banana/d' example.txt
    
    sed -i '/banana/d' example.txt
    
    -- 删除example.txt从第二行到第八行数据
    sed '2,8d' example.txt
    
  4. 打印特定行:打印文件example.txt的第2行。

    sed -n '2p' example.txt
    

    注意:-n选项与p命令一起使用时,sed只打印那些被p命令选中的行。

    查一下example.txt的最后一行(明确查看确定只有10行为前提)

     -- 这种方法可行 但是需要查询或定位你的最后一行的行号
     sed -n '10p' example.txt  
    
     -- 这种方法直接就定位了
     sed -n '$p' example.txt  
     
     -- 查一下example.txt的第七行到第十行的内容
     sed -n '7,10p' example.txt  
    
  5. 在指定行前插入文本:在文件example.txt的第2行前后插入文本"New line"。

    -- 第2行前插入文本"New line"
    sed -i '2i\New line' example.txt
    
    -- 第2行后插入文本"New line"
    sed -i '2a\New line' example.txt
    
    -- 这是在最后一行行前添加字符串
    sed -i '$i 192.0.2.80 tidb80' /etc/hosts  
    
    -- 这是在最后一行行后添加字符串
    sed -i '$a 192.0.2.80 tidb80' /etc/hosts  
    
  6. 关闭 /etc/selinux/config

    -- 第一种方法(精确匹配法)
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config
    
    -- 第二种方法(正则表达式匹配法)
    sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config (正则表达式匹配法)
    

sed的功能非常强大,通过组合不同的命令和选项,可以完成复杂的文本处理任务。然而,由于其语法相对复杂,初学者可能需要一些时间来熟悉和掌握它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值