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. springboot入门之版本依赖和自动配置原理

    前言 Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that ...

  2. 彻底掌握 Commonjs 和 Es Module

    目录 Commonjs commonjs 实现原理 require 文件加载流程 require 模块引入与处理 require 加载原理 require 避免重复加载 require 避免循环引用 ...

  3. 一.Promise入门准备阶段

    一.Promise入门准备阶段 1.区别实例对象呵函数对象 2.两种类型的回调函数(同步与异步) 2.1 同步回调 2.2 异步回调 3.JS的error处理 3.1 错误的类型 3.2 错误处理与错 ...

  4. NOIP模拟92&93(多校26&27)

    前言 由于太菜了,多校26 只改出来了 T1 ,于是直接并在一起写啦~~~. T0 NOIP 2018 解题思路 第一次考场上面写三分,然而我并不知道三分无法处理不是严格单峰的情况,但凡有一个平台都不 ...

  5. Oracle中对数字加汉字的排序

    需求:有一列NAME, varchar2类型,内容如下 以上就是已经按order by name进行排序的,但不是我们想要的结果 现在需要只按数字进行排序 第一步:抽取数字由于数字有是一位的有是两位的 ...

  6. Mac 下 Nginx 配置使用

    安装 homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...

  7. HTTPS-自己生成数字证书

    一.获取证书的途径 自签名证书,适用于开发者测试HTTPS,最快速的途径就是生成自签名证书,非常方便. Let's Encrypt证书,可以使用免费CA机构签发的证书. 使用收费CA机构签发的证书,如 ...

  8. C#-WPF数据绑定基础(一)

    前言:WPF数据绑定技术有效的提高了程序的容错率,可以最大程度的保持程序的健壮性,从而降低程序在使用过程中崩掉的可能性. 接下来,我将分享一下我在写测量程序过程中所用到的数据绑定方面的知识 首先,我所 ...

  9. 14-2-Unsupervised Learning ----Word Embedding

    Introduction 词嵌入(word embedding)是降维算法(Dimension Reduction)的典型应用 那如何用vector来表示一个word呢? 1-of-N Encodin ...

  10. [loj2339]通道

    类似于[loj2553] 对第一棵树边分治,对第二棵树建立虚树,并根据直径合并的性质来处理第三棵树(另外在第三棵树中计算距离需要使用dfs序+ST表做到$o(1)$优化) 总复杂度为$o(n\log^ ...