GUN sed高级用法,sed脚本编写
这里举一些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脚本编写相关推荐
- linux sed高级用法,sed 高级用法
首先,应该明白模式空间的定义.模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的.这对接下来的学习是有帮助的. 在正常情况下,sed将待处理的行读入模式空间,脚本中的命令就一 ...
- sed基本用法 sed文本块处理 、 sed高级应用
sed 文本编辑器(vim) 增,删,改,查 特色:流处理器[逐行处理的流处理器] 各种编辑器notepad,notepad++,word,atom vim,vi,gedit,sed 非交互的(sed ...
- Linux文本处理sed命令高级用法
sed 工作原理 sed 即 Stream EDitor,和 vi 不同,sed是基于行的文本编辑器 Sed是从文件或管道中读取一行,处理一行,输出一行:再读取一行,再处理一行,再输出一行,直到最后一 ...
- shell脚本——sed详细用法
sed详细用法 sed的作用 sed使用方法介绍 命令行格式 举例说明 对文件进行增.删.改.查操作 增加文件内容 对文件进行搜索替换操作 其他命令 其他选项 sed结合正则使用 补充扩展总结 sed ...
- 面试linux中sed的用法,linux中sed命令的使用与注意小结
前言 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用s ...
- linux sed 命令,Linux sed命令用法详解
提到 sed 命令,就不得提到 Sed 工具.Sed(stream editor)是一种非交互式的流编辑器,通过多种转换修改流经它的文本. 首先,Sed 通过文件或管道读取文件的内容,在默认情况下,S ...
- SHELL脚本编程:sed高级应用和awk基本用法(SHELL----DAY31)
回顾 正则表达式 基本正则 ^ $ [] [^] . * {n,m} {n} {n,} () 扩展正则 + ? {n,m} ( ) | \b sed 前置命令 | sed 选项 (定址符)指令 sed ...
- sed的基本用法和高级用法
sed 的详细用法 sed:stream editor 流编辑器 sed的工作模式:sed是一个行文本编辑器,默认每次处理文本中所匹配到一行内容到模式空间,然后用后面的命令进行操作,操作完成之后,会把 ...
- Linux sed命令高级用法精讲
<Linux sed用法详解>一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求.本节将介绍 sed 提供的一些高级功能,这些功 ...
最新文章
- 学python需要什么-想要学人工智能需要学些什么python的知识
- sql注入-error、boolean、time-based and 宽字节
- Missing you is a kind of my deep-pain in my life
- 《终身成长》读书笔记(part4)--创造性并不是出自灵感的神奇行为,而是努力工作和倾情奉献的结果
- Mac怎么不能拷贝文件到U盘
- 那些鼓吹国内首个.NET 5框架的,该醒醒了!
- php protobuf 二进制,PHP环境中使用ProtoBuf数据格式
- python基础入门(10)之循环语句
- [Unity] 播放 Generic Animation 导致无法移动的解决办法:在 Animator 中勾选 Apply Root Motion
- 面试技巧,如何通过索引说数据库优化能力
- CSS —— 多媒体查询
- 30种SQL查询语句优化方法
- 解析OA系统易用性的价值和意义
- 操作系统原理、实现与实践课后习题参考答案(已完结)
- 论文-Estimation–Action–Reflection: Towards Deep Interaction Between Conversational and Recommender Sys
- linux rsh通信实现_RSH的网络通信细节
- 嵌入式QTlinux 工程编译
- imgaug数据增强库使用
- maya 白天室内灯光_maya 灯光怎么打?
- 帆软报表获取管理平台用户信息