Linux三剑客之sed命令

本文介绍了Linux文本处理工具sed,作为grep的补充,sed能进行文本编辑而无需交互操作。它逐行处理文本,不破坏原始文件,支持打印、追加、插入、删除、替换等操作。例如,使用'n p'组合可以打印指定行,'n d'删除行,'n s/old/new/g'全局替换字符串。sed的-i选项可以直接修改文件。通过这些命令,用户能高效地编辑和过滤文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux三剑客(grep、sed、awk)之sed命令

  • grep 、sed、awk并称为文本三剑客。使用grep可以很好的实现文本查找的功能,然而却无法进行编辑(选取、替换、删除、新增),sed的出现便解决了这一问题。

  • sed的英文全称是stream editor(流编辑器),与vim不同,它是一种非交互式的文本编辑器。它每次只从标准输入/文本获取一行信息,存储到其模式空间 (pattern space),然后进行sed命令编辑后,将结果输出到屏幕上(除非sed命令删除这一行或取消打印)。sed每处理完一行就将其从模式空间中删掉,然后将下一行读入空间,进行处理和显示。处理完文件的最后一行后,sed便结束运行。(估计就是因为一行一行读取处理才起名叫流编辑器的吧)

  • sed编辑没有破坏性,它默认不会修改文件,除非使用选项主动修改。

sed命令使用

  • 使用格式:sed [选项] ‘[动作]’ 文件名 ,或者是配合管道符‘|’使用:sh a.sh | sed [选项] ‘[动作]’

  • 选项:
    -n: 取消默认输出,配合动作p来输出想输出的行
    -e: 允许对输入数据应用多条sed命令
    -i: 直接修改读取数据的文件,而不输出到屏幕

  • 动作:
    p: 打印。 格式为 sed -n ‘2p’ a.txt (打印第2行) (通常要配合-n选项使用,不然还会格外打印出全文件内容)。
    sed -n ‘5,8p’ a.txt (打印第5到第8行)
    sed -n ‘1~2p’ a.txt(打印所有奇数行)、sed -n ‘2~2p’ (打印所有偶数行)
    步进~(波浪形前的数字表示起始行,波浪线后的数字表示步进长度)

    a: 追加。 格式为 sed ‘2a hello’ a.txt (在第2行后边追加hello)
    i: 插入。 格式为 sed ‘2i hello’ a.txt (在第2行前边插入hello)
    d: 删除。 格式为 sed ‘2,4d’ a.txt (删除第2行到第4行的数据)
    c: 行替换。 格式为 sed ‘2c hello’ a.txt (把第2行的内容替换成hello)
    s: 字符串替换。格式为 sed ‘5s/旧字符串/新字符串/g’ a.txt (5代表处理对象是第5行,g是全局替换)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值