sed-文本处理工具

sed是一种非交互式的流编辑器,通过多种转换修改流经它的文本,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed可做的编辑工作包括删除、查找替换、添加、插入、从其他文件中读入数据等。

注:要想保存修改后的文件,必须使用重定向生成新的文件。如果想直接修改源文件本身则需要使用“-i”参数。

sed命令使用的场景包括以下一些:

  • 常规编辑器编辑困难的文本
  • 太过于庞大的文本,使用常规编辑器难以胜任
  • 有规律的文本修改,加快文本处理速度(比如全文替换)

使用sed修改文件流的方式如下:

sed [options] 'command' file
options是sed可以接受的参数
command是sed的命令集(一共有25个)
使用-e参数和分号连接多编辑命令
-e参数本身只是sed的一个简单参数,表示将下一个字符串解析成sed编辑命令,一般情况下可以忽略,但是当sed需要传递多个编辑命令时该参数就不能少了。

注:sed默认不修改原文件,如果希望保存修改后的文件则需要">"重定向
    如果想直接修改原文件,使用"-i"参数

sed常用命令:
在这里插入图片描述
sed常用参数
在这里插入图片描述
sed常用正则表达式匹配
在这里插入图片描述

例:
准备一个sed.txt文件来做试验:
在这里插入图片描述
将this改为That,line改为LINE,多个编辑命令可以使用-e参数连接
在这里插入图片描述
也可以使用分号连接两个编辑命令
在这里插入图片描述
删除:
用户d命令可删除指定的行
将文件的第一行删除后输出到屏幕sed '1d' sed.txt
在这里插入图片描述
删除指定范围的行(第1行到第3行)sed '1,3d' sed.txt
在这里插入图片描述
删除第3行到最后一行sed '3,$d' sed.txt
在这里插入图片描述
删除最后一行sed '$d' sed.txt
在这里插入图片描述
删除所有包含“second”的行sed '/second/d' sed.txt
在这里插入图片描述
删除空行sed '/^$/d' sed.txt
在这里插入图片描述
查找替换
使用s命令可将查找到的匹配文本内容替换为新的文本,默认情况只替换第一次匹配到的内容sed 's/line/LINE/' sed.txt
在这里插入图片描述
如果想只替换第二个line为LINEsed 's/line/LINE/2' sed.txt
在这里插入图片描述
使用g选项,可以完成所有匹配值的替换sed 's/line/LINE/g' sed.txt
在这里插入图片描述
将以this开头的this替换为thatsed 's/^this/that/' sed.txt
在这里插入图片描述
过滤出ens32网卡的IP地址和掩码信息
在这里插入图片描述
字符转换
使用y命令可以进行字符转换,其作用为将一系列字符逐个地变换为另外一系列字符。
基本用法如下:
以下命令会将file中的O转换为N、L转换为E、D转换为W
注意转换字符和被转换字符的长度要相等,否则sed无法执行

sed 'y/OLD/NEW' file

如:sed 'y/1245/ABCD/' sed.txt
在这里插入图片描述
插入文本
使用ia命令插入文本,其中i代表在匹配行之前插入,而a代表在匹配行之后插入

在第二行前插入文本sed '2 i test' sed.txt
在这里插入图片描述
在第二行后插入文本sed '2 a test' sed.txt
在这里插入图片描述
如果要同时新增很多行,则每行之间用\n来进行新行的添加sed '2 a\test\ntest2\ntest3' sed.txt
在这里插入图片描述
取代行
c命令,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行sed '2,4c this is 2-4 line' sed.txt
在这里插入图片描述
读入文本
使用r命令可从其他文件中读取文本,并插入匹配行之后。
如:将/etc/passwd中的内容读出放到Sed.txt空行之后sed '/^$/r /etc/passwd' sed.txt
在这里插入图片描述
打印
使用p命令可进行打印,这里使用sed命令时一般都加-n参数,表示不打印没关系的行。不加-n参数,会输出所有行,找到的行会重复显示sed '/is/p' sed.txt
在这里插入图片描述
-n参数,只显示找到的行sed -n '/is/p' sed.txt
在这里插入图片描述
sed脚本
使用sed脚本可以加快工作效率,调用sed命令并使用-f参数指定文件
写如下脚本,作用是将全文的this改成THAT,并删除所有空行
在这里插入图片描述
执行sed脚本sed -f sed1.rules sed.txt
在这里插入图片描述
也可以这样写脚本(第一行是sed命令解释行)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值