Linux系统Shell脚本第六章:文件三剑客之sed

Sed是一个强大的文本处理工具,常用于Linux系统。它的工作流程包括读取、执行和显示,能进行删除、替换、添加等操作。文章列举了Sed的输出指定行、插入行、删除行和迁移文本等用法示例,结合正则表达式展示了其灵活性和实用性。
摘要由CSDN通过智能技术生成

Shell编程三剑客之sed

前言sed工具与之前讲过的grep以及awk合称为Linux三剑客,它在我们Linux系统的操作管理中是被大量使用的文本处理工具,所以学习sed是绝对必要的。

一、Sed编辑器(1)Sed概述sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。(2)Sed工作流程sed 的工作流程主要包括读取、执行和显示三个过程。

读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行。显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。注意:默认情况下所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变,除非是用重定向存储输出。

(3)Sed基本语法

基本格式:
sed [选项] ‘操作’ 参数
sed [选项] -f scriptfile 参数

  • 常用选项
    • 常用操作
    • 二、Sed用法示例

      (1)Sed输出指定行

      • [root@youzi home]# sed -n ‘p’ passwd #输出所有行
        [root@youzi home]# sed -n ‘3p’ passwd #输出第三行
        [root@youzi home]# sed -n ‘3,5p’ passwd #输出三到五行
        root@youzi home]# sed -n ‘p;n’ passwd #输出所有奇数行
        [root@youzi home]# sed -n ‘n;p’ passwd #输出所有偶数行
        [root@youzi home]# sed -n ‘1,5{p;n}’ passwd #输出1到5行间的奇数行
        [root@youzi home]# sed -n ‘10,${n;p}’ passwd #输出第10行以后的偶数行
        [root@youzi home]# sed -n ‘2,+3p’ passwd #输出从第2行开始的连续的三行
        ————————————————
        版权声明:本文为CSDN博主「羽翔青空」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
        原文链接:https://blog.csdn.net/qq1356059950/article/details/124653502

      •  

         

         

         

        • 配合正则表达式输出指定行

        [root@yanjing home]# sed -n ‘/the/p’ qwe.txt #输出包含the的行[root@yanjing home]# sed -n ‘2,/the/p’ qwe.txt #输出从第二行开始往后第一个包含the的行为止的所有内容[root@yanjing home]# sed -n ‘/the/=’ qwe.txt #输出所有包含the的所有行的行号[root@yanjing  home]# sed -n ‘/^PI/p’ qwe.txt #输出以PI开头的行[root@yanjing  home]# sed -n ‘/[0-9]$/p’ qwe.txt #输出以数字结尾的行[root@yanjing  home]# sed -n ‘/<wood>/p’ qwe.txt #输出包含wood单词的行

         

         

        (2)插入符合条件的行

      • [root@yanjing home]# sed ‘/the/i 下面有the’ qwe.txt #在含有the的行的前面添加一行内容[root@yanjing home]# sed ‘/the/a 上面有the’ qwe.txt #在含有the的行的后面添加一行内容[root@yanjing  home]# sed ‘3a在第三行后面添加’ qwe.txt #正赛第三行后面添加一行内容“a”表示在当前行的后面一行添加当添加多行内容时,可以用\n分隔开,表示换行

         

        (3)删除符合条件的行

      • [root@youzi home]# sed ‘s/the/THE/’ qwe.txt #将每行中的第一个the替换为THE[root@youzi home]# sed ‘s/l/L/2’ qwe.txt #将每行中的第二个l替换成L[root@youzi home]# sed ‘s/l/L/g’ qwe.txt #将文件中的所有l都替换成L,g时全局替换[root@youzi home]# sed ‘s/l/ /g’ qwe.txt #将文件中的所有l都替换成空字符[root@youzi home]# sed ‘s/^/#/’ qwe.txt #将所有行的行首插入#[root@youzi home]# sed ‘/the/s/^/#/’ qwe.txt #在所有包含the的行的行首插入#[root@youzi home]# nl qwe.txt |sed ‘2,5s/the/THE/g’ #将三到五行中所有的the都替换成THE[root@youzi home]# sed ‘/the/o/O/g’ qwe.txt #将所有包含the的行中的o都替换成O

         

         

         

         

         

         

         

        • 先备份再修改数据
        • (4)迁移符合条件的文本

          • 常用参数
          • [root@youzi shell]# sed ‘/the/{H;d};$G’ qwe.txt #将包含the的行剪切值行尾,{;}用于多个操作,H复制,d删除,{H;d}先复制,再删除
            [root@youzi shell]# sed ‘1,5{H;d};14G’ qwe.txt #将1-5杠内容剪切到17行以后
            [root@youzi shell]# sed ‘/the/w 666.txt’ qwe.txt #将包含the的行复制另存为另一个文件
            [root@youzi shell]# sed ‘/the/r 666.txt’ qwe.txt #将文件666.txt的内容添加到所有包含the的行后
            [root@youzi shell]# sed ‘2aNew’ 666.txt #在第二行插入一行新内容
            [root@youzi shell]# sed ‘/the/aNew’ 666.txt #在所有包含the的行后插入一行新内容
            [root@youzi shell]# sed ‘2aNew\nNew2’ 666.txt #在第三行后插入多行内容

             

             

             

             

             

            总结

            • sed的概述,一些基本用法
            • sed常用的选项参数
            • sed的一些应用示例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值