• 38.sed高级编辑命令


    1.        简介:

    模式空间和保持空间:

    (1)模式空间:模式空间用于sed执行的正常流程中。该空间是sed内置的一个缓冲区,用来存放,修改从输入文件读取的内容。

    (2)保持空间:保持空间是另外的一个缓冲区,用来存放临时的数据。sed可以在保持空间和模式空间交换数据,但是不能在保持空间上执行普通的sed命令。每次循环读取数据过程中,模式空间的内容都会被清空,然而保持空间的内容则保持不变,不会在循环中被删除。

    2.        高级编辑命令:

    h        把模式空间中的内容覆盖至保持空间中;

    H        把模式空间中的内容追加至保持空间中;

    g        把保持空间中的内容覆盖至模式空间中;

    G        把保持空间中的内容追加至模式空间中;

    x        把模式空间中的内容与保持空间中的内容互换;

    n        覆盖读取匹配到的行的下一行至模式空间中;

    N        追加读取匹配到的行的下一行至模式空间中;

    d        删除模式空间中的行;

    D        删除多行模式空间的所有行;

    3.        示例:

    (1)sed  -n  'n;p'  文件名        #显示偶数行

    1. [root@work ~]# cat -n sed.txt
    2. 1 One
    3. 2 Two
    4. 3 Three
    5. 4 Four
    6. 5 Five
    7. 6 Six
    8. [root@work ~]# sed -n 'n;p' sed.txt
    9. Two
    10. Four
    11. Six

    (2)sed  'n;d'  文件名        #显示奇数行

    1. [root@work ~]# sed 'n;d' sed.txt
    2. One
    3. Three
    4. Five

    (3)sed  '1!G;h;$!d'  文件名        #逆序显示文件的内容

    注意:1!G:        #第1行不执行“G”命令,从第二行开始执行。       

                $!d:        #最后一行不删除(保留最后一行)

    1. [root@work ~]# sed '1!G;h;$!d' sed.txt
    2. Six
    3. Five
    4. Four
    5. Three
    6. Two
    7. One
    1. 也可使用tac命令:
    2. [root@work ~]# tac sed.txt
    3. Six
    4. Five
    5. Four
    6. Three
    7. Two
    8. One

    (4)sed  '$!d'  文件名        #取出最后一行

    1. [root@work ~]# sed '$!d' sed.txt
    2. Six

    (5)sed  '$!N;$!D'  文件名        #取出文件后两行

    1. [root@work ~]# sed '$!N;$!D' sed.txt
    2. Five
    3. Six

    (6)sed  '/^$/d;G'  文件名      #删除原有的所有空白行,而后为所有的非空白行后添加一个空白行

    1. [root@work ~]# cat sed.txt
    2. One
    3. Two
    4. Three
    5. Four
    6. Five
    7. Six
    8. [root@work ~]# sed '/^$/d;G' sed.txt
    9. One
    10. Two
    11. Three
    12. Four
    13. Five
    14. Six

    (7)sed  'G'  文件名        #在原有的每行后方添加一个空白行

    1. [root@work ~]# cat sed.txt
    2. One
    3. Two
    4. Three
    5. Four
    6. Five
    7. Six
    8. [root@work ~]# sed 'G' sed.txt
    9. One
    10. Two
    11. Three
    12. Four
    13. Five
    14. Six

    4.        练习题:

    (1)使用sed命令打印出ifconfig ens33的IP地址:

    (2)使用sed命令打印系统版本:

    (3)使用sed命令将 /etc/httpd/conf/httpd.conf 中 #NameVirtualHost *:80 去掉 # 号,同时将最后7行的#都去掉:

    (4)复制 /boot/grub2/grub.cfg 文件至 /tmp目录中,删除 /tmp/grub.cfg 文件中的行首的空白字符:

    (5)为 /tmp/grub.cfg 文件中前三行的行首添加#号:

    (6)将 /etc/yum.repos.d/ CentOS-Media.repo 文件中所有的enabled=0或gpgcheck=0的最后的0修改为1:

    (7)显示/etc/passwd文件中位于第偶数位置的用户的用户名:

  • 相关阅读:
    卷积神经网络超详细介绍(转载)
    java 二维数组与稀疏数组之间相互转换
    docker 部署多个前端vue项目
    html实现扫雷小游戏(附源码)
    架构——mysql、wiki、jira
    前端技术知识(含八股)总结 - 持续更新中
    【Java】想进大厂?你应该知道的算法经典习题(一)
    如何运用并行编程Parallel提升任务执行效率
    【中移芯昇】5. spi接口测试tf卡
    本地知识库开源框架Fastgpt、MaxKB产品体验
  • 原文地址:https://blog.csdn.net/Pink_Home/article/details/127339873