这里举一些sed常用的高级用法例子经供参考:

一下操作都针对file.txt文件作修改

[root@QX-××× ~]# cat file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch
tzdata-2013g-1.el6.noarch
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-common-0.6.3-32.el6.noarch

匹配行后添加字段:

[root@QX-××× ~]# sed 's/noarch$/&.bak/' file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch.bak
tzdata-2013g-1.el6.noarch.bak
jakarta-commons-collections-3.2.1-3.4.el6.noarch.bak
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch.bak
xml-common-0.6.3-32.el6.noarch.bak

标记字符串链接修改值:\1代替 (file) 拼接SYSTEM替换system

[root@QX-××× ~]# sed -n 's/\(file\)system/\1SYSTEM/gp' file.txt
fileSYSTEM-2.4.30-3.el6.x86_64
mesa-dri-fileSYSTEM-9.2-0.5.el6.x86_64
foomatic-db-fileSYSTEM-4.0-7.20091126.el6.noarch

跨行匹配:

[root@QX-××× ~]# sed -n '/libgcc/,/system/p' file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch
tzdata-2013g-1.el6.noarch
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64

多重-e编辑

[root@QX-××× ~]# sed -e '1,3d' -e 's/common/COMMON/' file.txt
jakarta-COMMONs-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-COMMON-0.6.3-32.el6.noarch

r读,w写,a追加下一行,i追加上一行,c替换

[root@QX-××× ~]# cat scc
####################
# test file #
####################
[root@QX-××× ~]# sed '/tzdata/r scc' file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch
tzdata-2013g-1.el6.noarch
####################
# test file #
####################
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-common-0.6.3-32.el6.noarch[root@QX-××× ~]# sed '/tzdata/w scc' file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch
tzdata-2013g-1.el6.noarch
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-common-0.6.3-32.el6.noarch
[root@QX-××× ~]# cat scc
tzdata-2013g-1.el6.noarch
[root@QX-××× ~]# sed '/tzdata/a\ --> 追加在匹配行的下一行' file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch
tzdata-2013g-1.el6.noarch
--> 追加在匹配行的下一行
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-common-0.6.3-32.el6.noarch

n匹配行的下一行,y是转换   (这里的n不是参数,是command)

[root@QX-××× ~]# sed -n '/tzdata/{n;s/common/COMMON/p;}' file.txt
jakarta-COMMONs-collections-3.2.1-3.4.el6.noarch
[root@QX-××× ~]# sed '1,3y/abcd/ABCD/' file.txt
liBgCC-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noArCh
tzDAtA-2013g-1.el6.noArCh
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-common-0.6.3-32.el6.noarch

h 暂存缓存区,g取用

[root@QX-××× ~]# sed -e '/libgcc/h' -e '$g' file.txt
libgcc-4.4.7-4.el6.x86_64
setup-2.8.14-20.el6_4.1.noarch
tzdata-2013g-1.el6.noarch
jakarta-commons-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
libgcc-4.4.7-4.el6.x86_64

sed脚本:

  • sed脚本就是写在文件中哈的一列sed命令,在命令启动sed命令时,如果想让sed知道这些命令来自文件,就要用-f选项带上sed脚本的文件名,

sed脚本语法:

  • 末尾不能有任何多余的空格或文本

  • 如果命令不能独占一行,就必须以分号结尾

  • sed 续行需要用到反斜杠\

vim read1
#my sed script
/libgcc/i\
this is add lines one\
two\
three\
add end
1,3y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
s/common/COMMON/g

结果:

[root@QX-××× ~]# sed -f read1 file.txt
LIBGCC-4.4.7-4.EL6.X86_64
this is a add lines
dsadas
sthree
SETUP-2.8.14-20.EL6_4.1.NOARCH
TZDATA-2013G-1.EL6.NOARCH
jakarta-COMMONs-collections-3.2.1-3.4.el6.noarch
filesystem-2.4.30-3.el6.x86_64
mesa-dri-filesystem-9.2-0.5.el6.x86_64
foomatic-db-filesystem-4.0-7.20091126.el6.noarch
xml-COMMON-0.6.3-32.el6.noarch

转载于:https://blog.51cto.com/aolens/1885106

GUN sed高级用法,sed脚本编写相关推荐

  1. linux sed高级用法,sed 高级用法

    首先,应该明白模式空间的定义.模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的.这对接下来的学习是有帮助的. 在正常情况下,sed将待处理的行读入模式空间,脚本中的命令就一 ...

  2. sed基本用法 sed文本块处理 、 sed高级应用

    sed 文本编辑器(vim) 增,删,改,查 特色:流处理器[逐行处理的流处理器] 各种编辑器notepad,notepad++,word,atom vim,vi,gedit,sed 非交互的(sed ...

  3. Linux文本处理sed命令高级用法

    sed 工作原理 sed 即 Stream EDitor,和 vi 不同,sed是基于行的文本编辑器 Sed是从文件或管道中读取一行,处理一行,输出一行:再读取一行,再处理一行,再输出一行,直到最后一 ...

  4. shell脚本——sed详细用法

    sed详细用法 sed的作用 sed使用方法介绍 命令行格式 举例说明 对文件进行增.删.改.查操作 增加文件内容 对文件进行搜索替换操作 其他命令 其他选项 sed结合正则使用 补充扩展总结 sed ...

  5. 面试linux中sed的用法,linux中sed命令的使用与注意小结

    前言 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用s ...

  6. linux sed 命令,Linux sed命令用法详解

    提到 sed 命令,就不得提到 Sed 工具.Sed(stream editor)是一种非交互式的流编辑器,通过多种转换修改流经它的文本. 首先,Sed 通过文件或管道读取文件的内容,在默认情况下,S ...

  7. SHELL脚本编程:sed高级应用和awk基本用法(SHELL----DAY31)

    回顾 正则表达式 基本正则 ^ $ [] [^] . * {n,m} {n} {n,} () 扩展正则 + ? {n,m} ( ) | \b sed 前置命令 | sed 选项 (定址符)指令 sed ...

  8. sed的基本用法和高级用法

    sed 的详细用法 sed:stream editor 流编辑器 sed的工作模式:sed是一个行文本编辑器,默认每次处理文本中所匹配到一行内容到模式空间,然后用后面的命令进行操作,操作完成之后,会把 ...

  9. Linux sed命令高级用法精讲

    <Linux sed用法详解>一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求.本节将介绍 sed 提供的一些高级功能,这些功 ...

最新文章

  1. 学python需要什么-想要学人工智能需要学些什么python的知识
  2. sql注入-error、boolean、time-based and 宽字节
  3. Missing you is a kind of my deep-pain in my life
  4. 《终身成长》读书笔记(part4)--创造性并不是出自灵感的神奇行为,而是努力工作和倾情奉献的结果
  5. Mac怎么不能拷贝文件到U盘
  6. 那些鼓吹国内首个.NET 5框架的,该醒醒了!
  7. php protobuf 二进制,PHP环境中使用ProtoBuf数据格式
  8. python基础入门(10)之循环语句
  9. [Unity] 播放 Generic Animation 导致无法移动的解决办法:在 Animator 中勾选 Apply Root Motion
  10. 面试技巧,如何通过索引说数据库优化能力
  11. CSS —— 多媒体查询
  12. 30种SQL查询语句优化方法
  13. 解析OA系统易用性的价值和意义
  14. 操作系统原理、实现与实践课后习题参考答案(已完结)
  15. 论文-Estimation–Action–Reflection: Towards Deep Interaction Between Conversational and Recommender Sys
  16. linux rsh通信实现_RSH的网络通信细节
  17. 嵌入式QTlinux 工程编译
  18. imgaug数据增强库使用
  19. maya 白天室内灯光_maya 灯光怎么打?
  20. 帆软报表获取管理平台用户信息

热门文章

  1. 「回顾」网易数据基础平台建设
  2. NOI.AC NOIP模拟赛 第六场 游记
  3. 巴蒂电信在泰米尔纳德邦推出4G Advanced网络
  4. mysql数据库表的基本操作
  5. 查看 -- tree
  6. MultiRow发现之旅(一)- 高效模板设计器
  7. screen 常用命令
  8. IE9会颠覆传统的上网模式?
  9. Linux主机驱动与外设驱动分离思想
  10. 挑战“IT我最大 Win7由你秀”