• Xshell学习第七课:sed语句


    --sed命令;

           Linux文本处理处理三剑客之sed

           --sed stream EDite

                  作为行编辑器,对文本进行编辑(以行为单位进行编辑)

                  注意:sed编辑文件,却不改变原文件

           --sed工作原理

                  指定一个文本文件,以此读取文本文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(使用正则表达式进行匹配),对匹配后的内容进行修改(替换,删除,打印,修改,保存)

           --sed用法:

                  Sed [参数] “sed自己独立的语法格式和语句” [文本文件]

    常见选项

          -n  拒接默认显示

          -r  指定使用扩展的正则表达式

                  所有的都不要      | 或者

          -e  script for while if

      -f  指定脚本文件

          -l  指定文本换行的长度

          -(i) 直接修改文件内容(不建议使用)

    地址界定方式

    1、 数字指定步长

          Sed -n ‘1~3p’ 文件名

    2、 直接匹配数值

           Sed -n ‘5,7p’ 文件名

    3、$ 指定行尾

     

        Sed -n ‘10,$p’ 文件名

     4、/正则/

                Sed -n ‘/k{5,、}/,$p’ abc

     5、0,addr

                Addr可以为数字/$/正则表达式

                Sed -n ‘0,/k{5,}/p’ abc

     6、addr,+N

                配置addr行到N行

                Sed -n ‘/fd/,+5p’ abc

    【Vim.代表光标所在当前行:”.,$s/^/#/”】注释

    指定光标所在行下三行取消注释【vim:.,+3s/^#//】

    常见命令

                -p print 默认在屏幕上显示出来  建议和 -n  一起使用;

                -c 替换行

                          Sed “/aaaa/c A” a

                -d 删除

                          Sed “/aaaa/d” a

                          Sed “1,3d” a

                -n   -N    读取/添加 模式匹配到的行的下一行内容,再对其进行操作

                -w   保存文件内容到一个新的文件

                       Sed “/patthen/w 新的文件名“ 原来的文件名

                       Sed “/k/w /tmp/aabbcc“ abc

                -s   文本内容替换   默认替换模式空间匹配到第一项内容

                          语法格式: s/pattern/字符串/

                                    中间的斜杠可以替换为任意一个特殊字符

                          -g  全部替换

                           1 2  和正则表达式的分组相同,实现反向应用;

                                  指定某一个匹配项进行修改替换

                           & 调用前面匹配的内容(pattern)

                              Sed “s/r..t/&er/g“ 文件

                 -I   在匹配行的上一行去添加指定内容

                           Sed “/for/iabc” 99xfb.sh

                 -a   在匹配行的下一行添加指定内容

                           Sed “/for/aabc” 99xfb.sh

                  

    练习;

    删除/boot/grub/grub.conf文件中所有空白开头的行的行首的空白字符;

      Sed ‘s/^[[:space:]]+//g’ /boot/grub/grub.conf

    删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

      Sed ‘s/^#[[:space:]]+//’ /etc/fstab

    给定一个目录,取出其目录名

      --dirname   --   取出文件路径的路径部分

      --base那么  -- 取出文件路径的文件名部分

    给定一个目录,取出其文件名

    显示菜单

    Sed的高级应用

                模式空间  --- 后来的 space“占有空间”

  • 相关阅读:
    力扣(LeetCode)验证回文字符串II 个人题解
    力扣(LeetCode)寻找数组的中心索引 个人题解
    力扣(LeetCode)验证回文串 个人题解
    力扣(LeetCode)三个数的最大乘积 个人题解
    力扣(LeetCode)二进制求和 个人题解
    力扣(LeetCode)加一 个人题解
    力扣(LeetCode)整数反转 个人题解
    力扣(LeetCode)颠倒二进制位 个人题解
    力扣(LeetCode)最后一个单词的长度 个人题解
    力扣(LeetCode)学生出勤记录I 个人题解
  • 原文地址:https://www.cnblogs.com/huangchuan/p/11378537.html
Copyright © 2020-2023  润新知