sed命令基本用法

sed是一个飞交互式文本编辑器

sed只对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件

调用sed的方法:

①在Shell命令行输入命令调用sed,格式为:

sed [选项] 'sed命令' 输入文件

②将sed命令插入脚本文件后,然后通过sed命令调用它,格式为:

sed [选项] -f sed脚本文件 输入文件
③将sed命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:
./sed 脚本文件 输入文件
第③种方式的sed脚本文件与第②种有所不同,其sed脚本文件需要以sha-bang(#!)符号开头,sha-bang后面是解析这个脚本的程序名。

sed的常用选项及其意义

选      项意      义示      例
 -n 不打印所有行到标准输出 见 n.1 n.2 n.3
 -e 表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略 [root@localhost ~]# sed -n -e '/Certificate/p' -e '/Certificate/=' input 
 -f 表示正在调用sed脚本文件 [root@localhost ~]# vim append.sed
 #!/bin/sed -f
 /file:/a\                      #a\表示在此处换行添加文本
 We append a new line.\         #“\”符号表示换行
 We append another line.
 [root@localhost ~]# chmod u+x append.sed
 [root@localhost ~]# ./append.sed input

sed命令通常由定位问本行和sed编辑命令两部分组成

sed命令定位文本的方法

选      项意      义示      例
 x x为指定行号 n.1 [root@localhost ~]# sed -n '1p' input
 x,y 指定从x到y的行号范围 n.2 [root@localhost ~]# sed -n '3,6p' input
 /pattern/ 查询包含模式的行 n.3 [root@localhost ~]# sed -n '/certificate/p' input
 /pattern/pattern/ 查询包含两个模式的行
 /pattern/,x 从与pattern的匹配行到x号行之间的行 [root@localhost ~]# sed -n '/seugrid/,$p' input
 x,/pattern/ 从x号行到与pattern的匹配行之间的行 [root@localhost ~]# sed -n '3,/seugeid/p' input
 x,y! 查询不包括x和y行号的行 [root@localhost ~]# sed -n '2,10!p' input

sed编辑命令

选      项意      义示      例
 p 打印匹配行 [root@localhost ~]# sed -n '/Certificate/p' input
 = 打印文件行号 [root@localhost ~]# sed -n '/Certificate/=' input
 a\ 在定位行号之后追加文本信息 [root@localhost ~]# sed '/file:/a\We append a new line.' input
 i\ 在定位行号之前插入文本信息 [root@localhost ~]# vim insert.sed
 #!/bin/sed -f
 /file:/i\
 We insert a new line.
 [root@localhost ~]# chmod u+x insert.sed
 [root@localhost ~]# ./insert.sed input
 d 删除定位行 [root@localhost ~]# sed '1d' input     #删除第一行
 [root@localhost ~]# sed '$d' input     #删除最后一行
 [root@localhost ~]# sed '1,10d' input     #删除第1~10行
 [root@localhost ~]# vim delete.sed
 #!/bin/sed -f
 /[Cc][Ee][Rr][Tt][Ii][Ff][Ii][Cc][Aa][Tt][Ee]/d
 [root@localhost ~]# chmod u+x delete.sed
 [root@localhost ~]# ./delete.sed input
 c\ 用新文本替换定位文本 [root@localhost ~]# vim modify.sed
 #!/bin/sed -f
 /file:/c\
 We modify this line.
 [root@localhost ~]# chmod u+x modify.sed
 [root@localhost ~]# ./modify.sed input
 s 使用替换模式替换相应模式 [root@localhost ~]# sed 's/Certificate/CERTIFICATE/' input
 [root@localhost ~]# sed -n 's/Certificate/CERTIFICATE/p' input     #-n和-p选项结合使用,只打印替换行
 [root@localhost ~]# sed -n 's/Certificate/CERTIFICATE/' input     #少了p选项,不打印任何内容
 [root@localhost ~]# sed -n 's/seu/njue/p' input     #不带g选项的结果
 [root@localhost ~]# sed -n 's/seu/njue/' input     #带g选项的结果
 [root@localhost ~]# sed -n 's/seu/njue/2p' input     #sed替换第n次匹配
 [root@localhost ~]# sed -n 's/seu/njue/w outpout' input     #将sed字符串改为njue,并将结果写入output文件
 [root@localhost ~]# sed -n 's/seu/(&)/pg' input     #&表示了seu
 r 从另一个文件中读文本 [root@localhost ~]# vim otherfile
 This is the first line of the otherfile.
 This is the second line of the otherfile.
 [root@localhost ~]# sed '/Certificate/r otherfile' input     #在与Certificate匹配的行后读入otherfile文件
 w 将文本写入到一个文件 [root@localhost ~]# sed -n '1,5 w output' input     #将1~5行写入output文件
 [root@localhost ~]# sed -n '/globus/w output' input     #将与goobus关键字匹配的行写入output文件
 y 交换字符 [root@localhost ~]# sed 'y/fmj/FMJ/' input
 q 第一个模式匹配完成后退出 [root@localhost ~]# sed '5 q' input     #打印前5行,然后退出
 [root@localhost ~]# sed '/.r.*/q' input     #匹配第1个字符串后立即退出
 l 显示与八进制ASCII码等价的控制字符 [root@localhost ~]# sed -n '1,$l' control
 {} 在定位行执行的命令组 [root@localhost ~]# sed -n '/Certificate/{p;=}' input     #打印与Certificate匹配行的内容及行号
 [root@localhost ~]# sed '/Certificate/{s/i/I/g;s/le/99/;}' input     #在与certificate关键字匹配行将全部的i替换为I、将第1个le替换为99
 n 读取下一个输入行,用下一个命令处理新的行 [root@localhost ~]# sed '/Certificate/{n;s/le/99/;}' input
 h 将模式缓冲区的文本复制到保持缓冲区 [root@localhost ~]# sed '/Subject/h' input
 H 将模式缓冲区的文本追加到保持缓冲区 [root@localhost ~]# sed '/seugrid/H' input
 x 互换模式缓冲区和保持缓冲区的内容 [root@localhost ~]# sed '/seugrid/x' input
 g 将保持缓冲区的内容复制到模式缓冲区
 G 将保持缓冲区的内容追加到模式缓冲区 [root@localhost ~]# sed '$G' input




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值