sed [OPTION]...  'script'  [input-file] ...
        script:
            地址定界编辑命令
             
        常用选项:
            -n:不输出模式空间中的内容至屏幕;
            -e script, --expression=script:多点编辑;
            -f  /PATH/TO/SED_SCRIPT_FILE
                每行一个编辑命令;
            -r, --regexp-extended:支持使用扩展正则表达式;
            -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
         
            ~]# sed  -e  's@^#[[:space:]]*@@'   -e  '/^UUID/d'  /etc/fstab
         
        地址定界:
            (1) 空地址:对全文进行处理;
            (2) 单地址:
                #:指定行;
                /pattern/:被此模式所匹配到的每一行;
            (3) 地址范围
                #,#:
                #,+#:
                #,/pat1/
                /pat1/,/pat2/
                $:最后一行;
            (4) 步进:~
                1~2:所有奇数行
                2~2:所有偶数行
                 
        编辑命令:
            d:删除;
            p:显示模式空间中的内容;
            a  \text:在行后面追加文本“text”,支持使用\n实现多行追加;
            i  \text:在行前面插入文本“text”,支持使用\n实现多行插入;
            c  \text:把匹配到的行替换为此处指定的文本“text”;
            w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
            r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
            =:为模式匹配到的行打印行号;
            !:条件取反;
                地址定界!编辑命令;
            s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
                替换标记:
                    g:全局替换;
                    w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
                    p:显示替换成功的行;
                 
                练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
                    ~]# sed  's@^[[:space:]]\+@@' /etc/grub2.cfg
                练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
                    ~]# sed  's@^#[[:space:]]*@@'  /etc/fstab
                练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
                    ~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'
                    ~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'
                     
        高级编辑命令:
            h:把模式空间中的内容覆盖至保持空间中;
            H:把模式空间中的内容追加至保持空间中;
            g:把保持空间中的内容覆盖至模式空间中;
            G:把保持空间中的内容追加至模式空间中;
            x:把模式空间中的内容与保持空间中的内容互换;
            n:覆盖读取匹配到的行的下一行至模式空间中;
            N:追加读取匹配到的行的下一行至模式空间中;
            d:删除模式空间中的行;
            D:删除多行模式空间中的所有行;
             
            示例:
                sed  -n  'n;p'  FILE:显示偶数行;
                sed  '1!G;h;$!d'  FILE:逆序显示文件的内容;
                sed  ’$!d'  FILE:取出最后一行;
                sed  '$!N;$!D' FILE:取出文件后两行;
                sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行;
                sed  'n;d'  FILE:显示奇数行;
                sed 'G' FILE:在原有的每行后方添加一个空白行;

【Linux】【Shell】【text】sed的更多相关文章

  1. 【Linux下自定义Shell终端提示符】

    目录 基本转义符 字体颜色 背景颜色 移动光标 @ Linux系统终端提示符的特征由系统环境变量 PS1(Prompt String One)定义. 我们可以通过命令echo $PS1来查看当前设置, ...

  2. 【Linux&Unix--open/close/write/read系统调用】

    个人学习整理.如有不足之处,请不吝不吝赐教. 转载请注明:@CSU-Max 系列博文:      Linux&Unix学习第一弹 -- 文件描写叙述符与权限  Linux&Unix学习 ...

  3. 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群

    额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepal ...

  4. 【linux之设备,分区,文件系统】

    一.设备 IDE磁盘的设备文件采用/dev/hdx来命名,分区则采用/dev/hdxy来命名,其中x表示磁盘(a是第一块磁盘,b是第二块磁盘,以此类推), y代表分区的号码(由1开始,..3以此类推) ...

  5. 【linux之挂载,Raid,LVM】

    一.挂载,卸载 挂载:将新的文件系统关联至当前根文件系统卸载:将某文件系统与当前根文件系统的关联关系移除 cat /etc/mtab 存储着已经挂载的文件系统 (跟 mount 一样) mount:显 ...

  6. 【linux之进程管理,系统监控】

    一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...

  7. 【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件

    在Python中,调用:subprocess.Popen(cmd, stdout = PIPE, stderr = PIPE, shell= true)的时候,如果调用的shell命令本身在执行之后会 ...

  8. 【Linux磁盘优化管理--RAID和LVM】

    在现阶段的企业环境中,为了数据的安全性及完整性必须要有一个合理的存储方案.面对着每秒可能产生超过几TB的数据,考虑到磁盘能不能实现 热冗余,及扩容,缩容.Linux给出了RAID(磁盘阵列)以及LVM ...

  9. 【Linux 内核网络协议栈源码剖析】网络栈主要结构介绍(socket、sock、sk_buff,etc)

    原文:http://blog.csdn.net/wenqian1991/article/details/46700177 通过前面的分析,可以发现,网络协议栈中的数据处理,都是基于各类结构体,所有有关 ...

  10. 【linux之链接,函数,随机数】

    一.链接 硬链接(hard link):同一个文件使用了多个别名.新建文件是已经存在的一个别名,,当原文件删除时,新建的文件仍然可以使用.硬链接和原来的文件没有什么区别,而且共享一个inode号.通过 ...

随机推荐

  1. 【Django】Mac 安装pip3-install-mysqlclient 报错

    1.首先在pip3-install-mysqlclient时报错 mysql_config not found 2.逛了一些博客 让安装mysql或者mysql-connector-c 我安装了后者还 ...

  2. [python]django关闭debug

    1.版本声明 python3.6.5 django2.0.6 2.打开项目-setting setting.py中DEBUG默认是等于True,这样的话当访问接口存在错误会直接展示项目的所有配置信息, ...

  3. Springboot+Mybatisplus替换mybatis整合报错Mapped Statements collection does not contain value

    问题一: mybatisPlus完全兼容mybatis,一般来说直接替换掉就可以了,如果mybatis的数据源不能取消创建的话,就注掉mybatisplus的数据源 //@Configurationp ...

  4. Python进阶(装饰器)

    from datetime import datetime def log(func):#func表示装饰器作用于的函数 def wrapper(*args,**kw):#wrapper返回装饰器作用 ...

  5. Python 爬取 房天下

    ... import requests from requests import ConnectionError from bs4 import BeautifulSoup import pymong ...

  6. Typora常用操作

    Typora常用操作 目录 Typora常用操作 1. 标题 2.子标题 3. 区块 4.代码 5. 表格 6. 超链接 7.单选框 8.数学公式 9.流程图 10.生成目录 11.字体设置 12. ...

  7. .NET 百万级 大数据插入、更新 ,支持多种数据库

    功能介绍  (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...

  8. [cf1491G]Switch and Flip

    将其连有向边$(i,c_{i})$,由于每一个点出入度都为1,那么必然构成若干个环 对于每一个环,从一点出发,将搜到的点依次记录下来(直至返回自己),记作$v_{1},v_{2},...,v_{k}$ ...

  9. [源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer

    [源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer 目录 [源码解析] PyTorch 分布式(11) ----- Dis ...

  10. Kotlin小测试

    fun main(args: Array<String>) { var a=1 a=2 println(a)//2 println(a::class)//int (Kotlin refle ...