linux中Sed命令的使用(基础)

前言:

  sed是linux中的命令,一直以来从未使用过这个命令,但是其能力确实非常大的,特别是搭配正则匹配使用的时候,下面是我学习sed命令的过程,会用我自己学习时的实例来演示,功力尚浅,所以凑活着看

一、sed介绍

  SED是一项Linux指令,全名是stream editor,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。处理时,把当前处理的行存储在临时缓冲区内,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出

上面是在网上找的解释,只看这个会看懵,我自己理解了下,下面通过一个例子解释下

首先新建一个文件,就叫1.txt

在里面几行数据

查看下内容

下面是输入这样的命令

sed '1a test' 1.txt  //意思是在第一行添加一行内容“test”,其他的先不用管是什么意思,下面看下输出是怎样的

test添加在了第一行下面,添加成功了,下面使用cat命令查看下

看吧,test其实并没有添加到文件里面去,现在再来解释下上面的那些话

 把当前处理的行存储在临时缓冲区中:表示将1.txt的内容先存在缓冲区内,可以理解成复制了一份内容放在缓冲区内

 用sed处理缓冲区内容:上面的sed ‘1a test’ 1.txt,表示的就是添加test到新行中

 处理完成后缓冲区内容送到屏幕:就是经过sed处理后的数据,上面添加test成功的那张图

因为处理的是缓冲区的内容,就是我说的复制出来那一份的内容,所以真正文件的内容并没有变化,上面解释的有些啰嗦,但是没办法自己比较笨,怕后面又忘了

二、sed命令参数

语法格式:

sed[参数]‘动作’ filename

选项与参数解释:

-n:表示安静模式,在一般sed用法中,所有来自stdin的数据会被列出在终端上,加上-n参数后,则只有经过sed处理的那几行才会显示
-e:-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件
-f:将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-r:支持扩展表达式
-i:直接修改文件内容,加上这个参数后会直接将原有的文件内容修改,所以慎

动作说明:

[n1[,n2]]function
n1,n2:不一定会存在,一般代表选择进行动作的行数,eg:对1到10行执行动作,[1,10[动作]]

function:
下面的动作我尽量用英语也表示一下,这样好记一些,有些可能不是太准确

a(add):新增,a后面可以接字符串,在当前行下面会插入这个字符串
c(change):替换,c的后面可以接字符串,这些字符串会去掉n1,n2之间的行
d(delete):删除,后面不接参数
i(insert):插入,i后面接字符串,在当前行上面插入文本
p(print):打印,就是简化数据展示出来,会与-n参数搭配使用
s(supersede):取代,直接进行取代的工作,可以搭配正则使用

三、用法

还用上面建的那个文件演示

sed '1,3a test' 1.txt //第一行到第三行都添加test

sed '1,3s/127.0.0.1/192.168.128.18/g' 1.txt  //将第一行到三行中的127.0.0.1替换为192.168.128.128,此处可以使用正则匹配

sed '1,3c tt' 1.txt //表示把第一行到第三行的内容替换成了tt

 

 

sed '1,5d' 1.txt //表示将第一行到五行删除

sed '1i qwert' 1.txt //表示在第一行的上面插入数据‘qwert’

 

sed '1,5p' 1.txt //将第一行到第五行打印出来

 

但是上边是先将第一行到第五行打印,然后在后面打印出了文件中所有的内容,这时候使用下-n参数

sed -n '1,5p' 1.txt //这时候只会打印出第一行到第五行,并不会将所有的都打印出来

 

 就写到这儿吧,其实还有一些用法,但是我还没有用到,后面补充吧

“你的正则写的有多好你的sed就能用的有多秀”

转载于:https://www.cnblogs.com/Id3al/articles/9557581.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值