sed详解


sed(Stream EDitor),是一种流编辑器,用于文本编辑

语法

sed [option] 'SCRIPTS' FILE...

SCRIPTS:[Address] [!]Command 命令地址对

SED工作流程
  1. 读取新的一行到模式空间,将“SCRIPTS”的第一个address匹配,如果符合则执行command
  2. 如果address符合则执行command,不符合取下一个地址命令对
  3. 直到所有的地址命令对应用完,输出模式空间的内容
选项
选项 功能
-f FILE 调用sed脚本处理文件
-n 抑制默认内容输出,常与p命令连用
-r 支持扩展元字符
-iSUFFIX 修改源文件,同时创建一个备份文件,备份文件名为源文件名SUFFIX
SCRIPS

格式:[Address] [!]Command: !不执行后面的命令

address:

  • 空地址:匹配所有行
  • $:匹配最后一行
  • N:匹配第N行
  • N~M:从N行开始,每隔M-1行匹配
  • N,M:匹配N到M行
  • /PATTREN/:正则匹配的行

Command:包括模式空间命令和保持空间命令

模式空间命令

模式空间:可以想成工程里面的流水线,数据之间在它上面进行处理。

  • d ,删除模式空间的内容
  • p , 打印模式空间的内容
  • s///FLAG , 替换搜索 FLAG:g全局搜索
  • a\string ,append,追加内容
  • i\string ,insert,插入内容
  • c\string ,change,替换内容
  • = , 打印行号
  • l ,打印内容包括控制字符
  • y// , 字符装换
  • n next ,读取下一行到模式空间
  • r FILE , read读取文件内容到指定行
  • w FILE , write保存指定行到文件
  • [line-address]q , quit退出
  • N ,读取下一行内容到模式空间,以\n拼接上一行内容
  • P ,P打印当前模式空间开端至\n的内容,并追加到默认输出之前
  • D ,删除模式空间上一行的内容,并继续执行命令
保持空间命令

保持空间:可以想象成仓库,我们在进行数据处理的时候,作为数据的暂存区域。

  • h/H ,hold,将模式空间的内容覆盖h(追加H)到保持空间
  • g/G ,get,将保持空间内容覆盖g(追加G)到模式空间
  • x ,exchange,交换两个空间的内容
sed使用实例

测试文件内容

[root@localhost tmp]# cat test.txt 
This is the header line.
This is the first data line.
This is the second data line.
This is the last data line.
1、打印: p 命令

命令 p 是打印命令,用于显示模式空间的内容。默认情况下, sed 把输入行打印在屏幕上,选项-n 用于取消默认打印操纵。当选项-n 和命令 p 同时出现时, sed 可打印选定的内容

例子1:打印2行的内容

[root@localhost tmp]# sed '2p' test.txt 
This is the header line.
This is the first data line.
This is the first data line.
This is the second data line.
This is the last data line.

说明:默认情况下, sed 把所有输入行都打印在标准输出上。如果在某一行匹配到 north, sed就把该行另外打印一遍。

例子2:打印匹配first的行,并抑制未选定行输出

[root@localhost tmp]# sed -n '/first/p' test.txt     
This is the first data line.

说明:默认情况下, sed 打印当前缓存区中的输入行。命令 p 指示 sed 将再次打印该行。选项-n 取消 sed 取消默认打印操作。选线-n 和命令配合使用,模式缓冲区内的输入行,只被打印一次。如果不指定-n 选项, sed 就会像上例中那样,打印出重复的行。如果指定了-n,则sed 只打印包含匹

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值