sed详解

sed处理文本是按行处理,也就是读一行处理一行。

sed的命令基本格式是:
sed 选项 ‘编辑指令’ 文件路径

也可以通过管道(|)传输参数给sed处理 前置命令 | sed 选项 ‘编辑指令’


sed的常用参数有:
-n 屏蔽默认输出;如果不加-n选项会全部输出文本满足条件的行再重复输出
-r 如果使用扩展正则,则需要添加-r选项,默认不支持扩展正则,只支持标准正则
-i 直接修改源文件;不加-i只会在屏幕临时输出不会修改源文件,一般测试过命令无误才会在脚本中使用-i选项
sed的编辑指令:

p 输出

命令完整示例说明
psed -n 'p' 1.txt输出1.txt的所有行
2psed -n '2p' 1.txt输出1.txt的第二行
2,5psed -n '2,5p' 1.txt输出1.txt的第二行到第五行
2,+5psed -n '2,+5p' 1.txt输出1.txt的第二行和第二行以后的5行
1~2psed -n '1~2p' 1.txt输出第一行,每隔两行输出一行,也就是输出奇数行
2~2psed -n '1~2p' 1.txt输出第二行,每隔两行输出一行,也就是输出偶数数行
/正则/psed -n '/^[0-9]/p' 1.txt输出1.txt以数字开头的行
$=sed -n '$=' 1.txt输出1.txt的行数

d 删除

命令完整示例说明
2dsed '2d' 1.txt删除1.txt的第二行
2,5dsed '2,5d' 1.txt删除1.txt的第二行到第五行
2,+5dsed '2,+5d' 1.txt删除1.txt的第二行和第二行以后的5行
$dsed '$d' 1.txt删除1.txt的最后一行行
/正则/sed '/^[0-9]/d' 1.txt删除以数字开始的行
sed '/^[0-9]/!d' 1.txt删除不是以数字开头的行
^$sed '^$' 1.txt删除1.txt的空行

s 替换

命令完整示例说明
s/old/new/sed 's/old/new/' 1.txt删除1.txt中每行的第一个old都替换成new
s/old/new/2sed 's/old/new/' 1.txt删除1.txt中每行的第二个old都替换成new
s/old/new/gsed 's/old/new/g' 1.txt删除1.txt中每行的每一个old都替换成new
s/old//sed 's/old//' 1.txt删除1.txt中每行的第一个old都替换成空也就是把old删除
s/old/&s/sed 's/old/&s/' 1.txt删除1.txt中每行的第一个old都替换成olds &代表前面查找的字符串
4,7s/^/#/sed '4,7s/^/#/' 1.txt删除1.txt中4-7行开头加上# 也就是批量添加注释
4,7s/^#an/an/sed '4,7s/^#an/an/' 1.txt删除1.txt中4-7行以#an开头的行去掉#

替换中s///可以用其他三个相同的符号代替如s### s&&& s999 都可以 这样的符号在替换路径的时候经常用到

i/a/c插入

命令完整示例说明
行号 ised '2i123' 1.txt在1.txt的第二行前面插入123
正则 ised '/^[0-9]/i123' 1.txt在1.txt中所有数字开头的行前面插入123
a在行后插入命令格式和i相同
c替换该行命令格式和i相同

sed高级应用

命令完整示例说明
行号rsed -i '2r 2.txt' 1.txt在1.txt中第二行后面插入2.txt的内容
行号,行号rsed -i '2,5r 2.txt' 1.txt在1.txt中第二行到第五行每行后面插入一遍2.txt的内容
/正则/rsed -i '/^[0-9]/r 2.txt' 1.txt在1.txt中以数字开头的行后每行面插入一遍2.txt的内容
wsed '2w 3.txt' 1.txt在1.txt中第二行导出为3.txt的内容
wsed '2,5w 3.txt' 1.txt在1.txt中第二行到第五行导出3.txt的内容
/正则/rsed -i '/^[0-9]/w 2.txt' 1.txt在1.txt中以数字开头的行导出为3.txt的内容
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值