linux三剑客之sed

简介

    sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

 

语法格式

    sed [参数] [处理规则] 文件名

 

参数说明

    -n  :只有经过sed特殊处理的内容才会被显示出来

    -e :可以进行多项编辑

    -f :直接将sed的动作写入一个脚本内,使用-f filename 运行该脚本

    -r :拓展正则

    -i :修改文件的内容并保存

动作说明

    a :a的后面可以接字符串,在当前行后增加一行或者多行

    i :i的后面可以接字符串,在当前行前增加一行或者多行(单独使用)

    c:c的后面可以接字符串,替换当前行或者多行

    p :打印满足条件的内容,一般与参数-n搭配使用

    d:删除内容,直接在d前面添加行数选择想要删除的行数

    s:替换字符串,默认情况下一行只替换一次

    g:全部执行,搭配动作s使用,可以将内容里每一行的所有内容替换

    &:代表前面命令匹配到的内容

    i:搭配s使用时,是忽略大小写的含义

    

实际操作

  以行为单位的新增/删除

   将1.txt文件内内容2-5行删除

 

     sed的动作就是'2,5d',d就是删除动作,2,5就是2到5行,所以显示的数据就没有2,5行的数据

 

    在1.txt文件内容中第二行后添加66

 

     sed的动作就是'2a66',a就是在第二行后增加新的一行66,66直接写在a后面即可

    同样的i就是在第二行前添加新的一行66,s就是将当前行替换成66

    如果想要增加多行,可以增加一个\n换行符即可

 

 

    

    以行为单位的替换

      将1.txt文件内2-5行的内容替换成1

 

     sed的动作就是'2,5c1',将2到5行的内容替换成了一个1

 

 

    多点编辑与查找替换

      使用一条sed命令,删除33的内容,并把22修改成1

     使用sed -e可以一次性多点编辑,一边使用动作d删除33,然后使用动作s与g将文本内容中的22替换成1即可

 

    将/etc/passwd中的root修改成Root

 

     如果想要永久修改,可以加上参数 -i,就会将文件里的内容修改掉了

 

 

 

 

    

 

posted @ 2021-12-21 17:28  椰子皮0oo0  阅读(44)  评论(0)    收藏  举报
1