zoukankan      html  css  js  c++  java
  • Linux中sed的用法实践

    Linux中sed的用法实践


    参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html

    http://www.fn139.com/list-2.html
    sed命令行格式为:
    sed [-nefri] 'command' 输入文本/文件
    常用选项:
        -n:取消默认的输出,使用安静(silent)模式。在一般的sed用法中,
            所有来自STDIN的资料一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来
        -e:进行多项编辑,及对输入行应用多条sed命令时使用。直接在指令模式上进行sed的动作编辑
        -f:指定sed脚本的文件名。直接将sed的动作写在一个档案内,-f filename则可以执行filename内的sed动作
        -r:sed的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
        -i:直接修改读取的文件内容,而不是由屏幕输出
    常用命令:
        a: 新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
        c: 取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行
        d: 删除,因为是删除,所以d后面通常不接任何内容
        i: 插入,i后面可以接字符串,而这些字符串在新的一行出现(目前的上一行)
        p: 列印,亦即将某个选择的资料打印出来。通常p会参与sed -n一起用
        s:取代,可以直接进行替换工作。通常这个s的动作可以搭配正则表达式。例如1,20s/old/new/g
    定址
        定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
        地址是一个数字,则表示行号;是"$"符号,则表示最后一行。例如:
        sed -n '3p' datafile  # 只打印第三行
        
        只显示指定行范围的文件内容,例如:
        # 只查看文件的第100行到第200行
        sed -n '100,200p' /data/mysql/mysql_3306/logs/slow.log

        地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或者二者的组合表示。例如:
        
        sed -i '2,5d' passwd
        # 删除第2行到第5行
        
        sed -i '/memcached/,/mysql/d' passwd
        # 删除包含"memcached"和"mysql"的行之间的行
        
        sed -i '/sshd/,10d' passwd
        # 删除包含"/sshd"到第10行的内容
        
        举例:
        [root@my3-224 ~]# sed -i '1d' passwd     # 删除第一行
        [root@my3-224 ~]# sed -i '$d' passwd     # 删除最后一行
        [root@my3-224 ~]# sed -i '1,2d' passwd     # 删除第1行到第2行
        [root@my3-224 ~]# sed -i '2,$d' passwd     # 删除第2行到最后一行
        
        显示某行:
        [root@my3-224 ~]# sed -n '1p' passwd    # 显示第一行
        [root@my3-224 ~]# sed -n '$p' passwd     # 显示最后一行
        [root@my3-224 ~]# sed -n '1,2p' passwd     # 显示第一行到第二行
        [root@my3-224 ~]# sed -n '20,$p' passwd # 显示第20行到最后一行
        
        使用模式匹配查询
        [root@my3-224 ~]# sed -n '/mysq/p' passwd    # 查询包含关键字mysq所有行
        [root@my3-224 ~]# sed -n '/$/p' passwd     # 查询包含$所在的所有行,使用反斜线屏蔽特殊含义

        增加一行或多行字符串
        [root@my3-224 ~]# cat ab
        Hello!
         ruby is me,welcome to my blog.
        end
        [root@my3-224 ~]#
        [root@my3-224 ~]# sed -i '1a drink tea' ab  # 第一行后增加字符串"drink tea"
        [root@my3-224 ~]# cat ab
        Hello!
        drink tea
            ruby is me,welcome to my blog.
        end
        [root@my3-224 ~]#
        
        [root@my3-224 ~]# cat ab
        Hello!
         ruby is me,welcome to my blog.
        end
        [root@my3-224 ~]# sed -i '1,3a drink tea' ab # 第一行到第三行后增加字符串"drink tea"
        [root@my3-224 ~]# cat ab
        Hello!
        drink tea
            ruby is me,welcome to my blog.
        drink tea
        end
        drink tea
        [root@my3-224 ~]#
        
        [root@my3-224 ~]# sed '1a drink tea or coffee' ab # 第一行后增加多行,使用换行 符
        Hello!
        drink tea
        or coffee
        ruby is me,welcome to my blog.
        end
        [root@my3-224 ~]# sed -i '1a drink tea or coffee' ab # 第一行后增加多行,使用换行符
        [root@my3-224 ~]# cat ab
        Hello!
        drink tea
        or coffee
        ruby is me,welcome to my blog.
        end
        [root@my3-224 ~]#
        
        替换一行中的某部分
        格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
        [root@my3-224 ~]# sed -n 's/drin/BBB/g' ab   # 替换drin为BBB
        [root@my3-224 ~]# sed -i 's/drin/BBB/g' ab   # 替换drin为BBB
        [root@my3-224 ~]# cat ab
        Hello!
        BBBk tea
        or coffee
        ruby is me,welcome to my blog.
        end
        [root@my3-224 ~]#

  • 相关阅读:
    About chrysanthemum and matrimony vine
    time stamp in javascript
    Feeling kind of the sorrow
    从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operator Framework
    从零开始入门 K8s | Kubernetes API 编程范式
    Apache Flink 1.10.0 发布 | 云原生生态周报 Vol. 38
    回顾 | Kubernetes SIG-Cloud-Provider-Alibaba 首次网研会(含 PPT 下载)
    开发函数计算的正确姿势——运行 Selenium Java
    Serverless 解惑——函数计算如何访问 Mongo 数据库
    开发函数计算的正确姿势——使用 brotli 压缩大文件
  • 原文地址:https://www.cnblogs.com/bjx2020/p/9111532.html
Copyright © 2011-2022 走看看