频道栏目
首页 > 安全 > 网络安全 > 正文

GUN sed高级用法,sed脚本编写

2016-12-26 10:01:56           
收藏   我要投稿

GUN sed高级用法,sed脚本编写。这里举一些sed常用的高级用法例子经供参考:

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

[root@QX-VPN ~]# 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-VPN ~]# 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-VPN ~]# 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-VPN ~]# 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-VPN ~]# 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-VPN ~]# cat scc

####################

# test file #

####################

[root@QX-VPN ~]# 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-VPN ~]# 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-VPN ~]# cat scc

tzdata-2013g-1.el6.noarch

[root@QX-VPN ~]# 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-VPN ~]# sed -n '/tzdata/{n;s/common/COMMON/p;}' file.txt

jakarta-COMMONs-collections-3.2.1-3.4.el6.noarch

[root@QX-VPN ~]# 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-VPN ~]# 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-VPN ~]# 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

上一篇:黑客是怎样入侵别人的手机或电脑
下一篇:流行应用AddThis存在postMessage XSS漏洞,百万站点受影响
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站