• sed命令基础


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

     一些基础练习见sed命令基础2

    用法:

        sed [option] script inputfile

    常用的option

      -n:不输出模式空间的内容到屏幕

      -e:多点编辑

      -f /path/script_file:从指定文件中读取编辑脚本

      -r:支持使用扩展的正则表达式

      -i[.bak] [备份文件并]原处编辑

    script:

      地址定界;命令

    常用命令:

        d:删除模式空间的行并立即启动下一轮循环

        p:打印当前模式空间的内容,并追加到默认输出之后

        a[]text:在指定行后面追加文本支持使用 进行多行追加

        i[]text:在行前插入文本

        c[]text:替换行为单行或多行文本

        w /path/file/:保存模式空间匹配的行至指定文件

        r /path/file:读取指定文件的文本至模式空间中匹配到的行后

        =:为模式空间中的行打印行号

        !:模式空间中匹配行取反处理

    地址定界:

    1. 如果不给地址,则对全文逐行进行处理
    2. 单地址:
            N:指定的行(N为数字)

            /pattern/:被此处模式匹配的每一行(关键字,正则)

          3. 地址范围:

                N,M:指定处理从N行到M行

                N,+M:指定处理从N行到N+M行

                /pat1/,/pat2/:指定处理从有第一个/pat1/到第二个/pat2/的行

                N,/pat1/:指定处理从N行到匹配/pat1/的行

            4. ~:步进处理

                    1~2:处理奇数行

                    2~2:处理偶数行

    查找替换模式:

        s/匹配内容/替换内容/[g|p|w]

            支持替换,支持使用其他分隔符,如:s@@@ s###等

            替换标记:

                g:行内全局替换

                p:显示替换成功的行

                w /path/file:将替换成功的行保存到文件

    接下来我们举例说明使用方法:

    在我们下列的演示中,只要不加-i选项,都只是将修改的数据打印咋屏幕上,并不是直接修改源文件

    删除某行

    sed "3,5d" /etc/passwd

    sed "$d" /etc/passwd

    sed "1~2d" /etc/passwd

    显示某行

    sed -n "2,5p" /etc/passwd

    sed -n -e "3,/root/=" -e "3,/root/p" /etc/passwd

    sed -n "/root/,5p" /etc/passwd

    添加某行

    sed '/root/asuperman' /etc/passwd行后

    sed '/root/isuperman' /etc/passwd 行前

    sed "1,3aHELLO" /etc/passwd

    替换某行

    sed '/root/csuperman' /etc/passwd 代替行

    sed '/root/csuperman Hello Chinese' /etc/passwd

    替换一行的某一部分

    sed "1,20s/root/HEHEHE/g" /etc/passwd

    sed -n "/nologin/s/nologin/READ/gp" /etc/passwd

  • 相关阅读:
    162 基于UDP协议的socket套接字编程
    161 解决粘包问题
    160 粘包问题
    159 模拟ssh远程执行命令
    158 Socket抽象层
    157 基于TCP协议的socket套接字编程
    C++:查找字符串字串并替换
    C++:查找字符串字串并替换
    请问c++中的#include "stdafx.h"是什么意思?
    请问c++中的#include "stdafx.h"是什么意思?
  • 原文地址:https://www.cnblogs.com/duzhaoqi/p/7445399.html
Copyright © 2020-2023  润新知