sed的用法小结

sed的用法小结

sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等
sed [OPTION]… ‘script’ [input-file] …

OPTION:

-n 不输出模式空间中的内容至屏幕,仅显示script处理后的结果
-e 多点编辑,eg: ~]# sed  -e  's@^#[[:space:]]*@@'   -e  '/^UUID/d'  /etc/fstab
-f 每行编辑一个命令
-r 支持使用扩展正则表表达式

地址定界:

(1)空地址:对全文进行处理
(2)单地址:
    #指定行
    /pattern/:被刺模式所匹配的到的每一行
(3)    地址范围
    #,#:
    #,+#:
    #,/part1/
    /part1/,/part2/
    $:最后一行
(4)    步进:~
    1~2:所有奇数行
    2~2:所有偶数行

编辑命令:

d:删除d后面通常不接任何东西
p:显示模式空间的内容,通常 p 会与参数 sed -n 一起运行~
w: /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中
r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
    g:全局替换;
    w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
    p:显示替换成功的行;
a\test 追加,而这些字串会在新的一行出现(目前的下一行)
c\text取代,c后面可以接上字符串
i\text追加,而这些字串会在新的一行出现(目前的上一行)

练习:

删除/etc/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
~]# sed  's@^[[:space:]]\+@@' /etc/grub2.cfg

删除/etc/fstab文件中以#开头的行的行首的#及#后面的所有空白字符
~]# sed  's@^#[[:space:]]*@@'  /etc/fstab

输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname
~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'

将etc/fstab中的UUID替换成ABCD
~]# sed  's/UUID/ABCD/p' /etc/fstab

注 sed -i 可以直接修改原文件

[root@localhost ~]# vim test.txt
[root@localhost ~]# cat test.txt 
test
[root@localhost ~]# sed -i 'a\#This is a test' test.txt 
[root@localhost ~]# cat test.txt 
test
#This is a test

在要编辑一个超大的文本文件的时候,就可以不用vim打开再编辑了,直接用sed -i 就可以直接在指定行添加内容了!

原创文章,作者:N27_flypig,如若转载,请注明出处:http://www.178linux.com/85283

(0)
上一篇 2017-08-22 13:55
下一篇 2017-08-23 16:21

相关推荐

  • linux第一天,不正经的感想

    课是正经课,人正不正经就不知道了

    2018-03-26
  • 马哥教育N22期第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 设备 功能 使用场景 区别 网桥 根据MAC地址来转发帧,本地通信只限本网段内, 相当于中继器,线路比较长保证信号不变形的传输 工作在物理层,相当于一个物理接口 集线器 接收到的数据包进行广播转发,所有端口都能收到此数据,通过MAC确认是不是发给自己的包进行回应 广播形式转发数据…

    Linux干货 2016-11-14
  • LAMP及nfs、samba的综合练习

    练习一: 配置第一台主机:服务端共享目录: [root@localhost /]# yum install nfs-utils [root@localhost /]# systemctl start rpcbind [root@localhost /]# sy…

    Linux干货 2016-10-24
  • 第三周作业

    第三周  文本处理工具:             linux上文本处理三剑客:                      grep、egrep、fgrep:文本过滤工具(模式pat…

    Linux干货 2016-12-18
  • Python函数式编程指南(三):迭代器

    这一篇我们将讨论迭代器。迭代器并不是函数式编程特有的东西,但它仍然是函数式编程的一个重要的组成部分,或者说是一个重要的工具。 转载请注明原作者和原文地址:) 3. 迭代器 3.1. 迭代器(Iterator)概述 迭代器是访问集合内元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问一遍后结束。 迭代器不能回退,只能往前进行迭代。这并…

    Linux干货 2015-03-11
  • Linux中的文件和目录的权限管理

    Linux系统通过完善的权限管理来限制每一个用户对于系统中文档和目录的访问。在Linux系统中,文件和目录的权限是有些差异的。一、权限介绍:如上所示,通过ll命令列出目录下文件的时候同时也会列出文件的权限,从第二位开始,一直到第九位,即rw-r–r–就是文件的权限描述:其中3位为一组:第一组:rw-:代表文件的属主(user)对文件的…

    Linux干货 2017-04-01