sed 应用案例
2017-12-09 00:00
78 查看
摘要: 将不定期补充......
sed是什么?
sed命令是一个面向行处理的工具,它以"行"为处理单位,处理后的结果会输出到标准输出
sed的工作原理
sed会把要处理的行存储在缓冲区中,接着sed命令处理缓冲区的内容,处理完成后把缓冲区内容送往屏幕,这个缓冲区称为"模式空间".
d 表示删除行
/2/d表示把文件中包含2的行删除
提取文件中每行的第一个域内容
s 表示替换的作用,用法 s/SOURCE/DEST/ ,匹配SOURCE内容替换成DEST内容,":.*$"表示匹配行中第一个:(冒号)开始到行末内容清空处理
输出匹配内容的行
n 可以让sed输出匹配内容的行,不然它会先输出处理的行,再执行后面的动作
输出一定范围的内容
输出1到5行的内容
替换的另一个用法 "/^[dr]/s/b/B/g"中"^[dr]"表示匹配以d或r开头的行,s/xx/xx/g表示将所有xx替换成xx
删除每行中最后两个字符,"..$"中"."表示匹配任意一个字符,"$"表示行末结束符
删除每行前两个字符
& 在sed中指代前面被匹配的部分
() 在sed的用法 我们称为"sed的预存储技术",()的内容被依次暂存起来,存储在\N里面,方便调用处理
定位内容的另一方法
-e 选项可设置多个command,使用-e选项后面只能跟command内容不能再夹杂其他选项
从文件中读取command内容,我们可以把常用的规则写进文件,方便平时工作使用
在匹配行下插入文件内容
在匹配行下插入自定义内容 a\后跟自定义内容即可
在匹配行上插入自定义内容 i\后跟自定义内容即可
y 表示按字符依次替换,如果第一次处理字符碰到自己替换自己时,后面的字符替换动作便失效
隔行操作
将指定行写入特定文件中
归纳一下
常用动作 r a i p w d s y n
常用选项 -f -e -n
sed是什么?
sed命令是一个面向行处理的工具,它以"行"为处理单位,处理后的结果会输出到标准输出
sed的工作原理
sed会把要处理的行存储在缓冲区中,接着sed命令处理缓冲区的内容,处理完成后把缓冲区内容送往屏幕,这个缓冲区称为"模式空间".
d 表示删除行
[root@linux01 ~]# cat file1.txt test 1 one two three proce test 2 test test file [root@linux01 ~]# sed '/2/d' file1.txt test 1 one two three proce test test file
/2/d表示把文件中包含2的行删除
提取文件中每行的第一个域内容
[root@linux01 ~]# head -n5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@linux01 ~]# head -n5 /etc/passwd|sed 's/:.*$//' root bin daemon adm lp
s 表示替换的作用,用法 s/SOURCE/DEST/ ,匹配SOURCE内容替换成DEST内容,":.*$"表示匹配行中第一个:(冒号)开始到行末内容清空处理
输出匹配内容的行
[root@linux01 ~]# head -n5 /etc/passwd|sed '/root/p' root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@linux01 ~]# head -n5 /etc/passwd|sed -n '/root/p' root:x:0:0:root:/root:/bin/bash
n 可以让sed输出匹配内容的行,不然它会先输出处理的行,再执行后面的动作
输出一定范围的内容
[root@linux01 ~]# sed -n '1,5p' /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
输出1到5行的内容
替换的另一个用法 "/^[dr]/s/b/B/g"中"^[dr]"表示匹配以d或r开头的行,s/xx/xx/g表示将所有xx替换成xx
[root@linux01 ~]# head -n5 /etc/passwd| sed '/^[dr]/s/b/B/g' root:x:0:0:root:/root:/Bin/Bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sBin:/sBin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
删除每行中最后两个字符,"..$"中"."表示匹配任意一个字符,"$"表示行末结束符
[root@linux01 ~]# head -n5 /etc/passwd| sed 's/..$//' root:x:0:0:root:/root:/bin/ba bin:x:1:1:bin:/bin:/sbin/nolog daemon:x:2:2:daemon:/sbin:/sbin/nolog adm:x:3:4:adm:/var/adm:/sbin/nolog lp:x:4:7:lp:/var/spool/lpd:/sbin/nolog
删除每行前两个字符
[root@linux01 ~]# head -n5 /etc/passwd| sed 's/..//' ot:x:0:0:root:/root:/bin/bash n:x:1:1:bin:/bin:/sbin/nologin emon:x:2:2:daemon:/sbin:/sbin/nologin m:x:3:4:adm:/var/adm:/sbin/nologin :x:4:7:lp:/var/spool/lpd:/sbin/nologin
& 在sed中指代前面被匹配的部分
[root@linux01 ~]# head -n5 /etc/passwd| sed 's/nologin/&2014/' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin2014 daemon:x:2:2:daemon:/sbin:/sbin/nologin2014 adm:x:3:4:adm:/var/adm:/sbin/nologin2014 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin2014
() 在sed的用法 我们称为"sed的预存储技术",()的内容被依次暂存起来,存储在\N里面,方便调用处理
[root@linux01 ~]# head -n1 /etc/passwd| sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' bash:x:0:0:root:/root:/bin/root
定位内容的另一方法
[root@linux01 ~]# head -n5 /etc/passwd| sed -n '/0/,/3/p' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
-e 选项可设置多个command,使用-e选项后面只能跟command内容不能再夹杂其他选项
[root@linux01 ~]# head -n5 /etc/passwd| sed -ne '1,2p' -e '5p' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
从文件中读取command内容,我们可以把常用的规则写进文件,方便平时工作使用
[root@linux01 ~]# cat test.txt /0/,/3/p [root@linux01 ~]# head -n5 /etc/passwd| sed -nf test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
在匹配行下插入文件内容
[root@linux01 ~]# head -n5 /etc/passwd| sed '/2/r test.txt' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin /0/,/3/p adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
在匹配行下插入自定义内容 a\后跟自定义内容即可
[root@linux01 ~]# head -n5 /etc/passwd| sed '/2/a\===command===' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ===command=== adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
在匹配行上插入自定义内容 i\后跟自定义内容即可
[root@linux01 ~]# head -n5 /etc/passwd| sed '/2/i\===before===' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin ===before=== daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
y 表示按字符依次替换,如果第一次处理字符碰到自己替换自己时,后面的字符替换动作便失效
[root@linux01 ~]# head -n5 /etc/passwd| sed 'y/oo/Bo/' rBBt:x:0:0:rBBt:/rBBt:/bin/bash bin:x:1:1:bin:/bin:/sbin/nBlBgin daemBn:x:2:2:daemBn:/sbin:/sbin/nBlBgin adm:x:3:4:adm:/var/adm:/sbin/nBlBgin lp:x:4:7:lp:/var/spBBl/lpd:/sbin/nBlBgin [root@linux01 ~]# head -n5 /etc/passwd| sed 'y/oo/oB/' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
隔行操作
[root@linux01 ~]# head -n5 /etc/passwd| sed 'n;s/bin/MOM/g' root:x:0:0:root:/root:/bin/bash MOM:x:1:1:MOM:/MOM:/sMOM/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sMOM/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
将指定行写入特定文件中
[root@linux01 ~]# head -n5 /etc/passwd| sed '/root/w new.txt' root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@linux01 ~]# cat new.txt root:x:0:0:root:/root:/bin/bash
归纳一下
常用动作 r a i p w d s y n
常用选项 -f -e -n
相关文章推荐
- sed配合正则表达式应用案例
- sed应用案例
- cat-grep-sed应用案例
- linux shell 系列 sed 命令基本用法实例-①set命令选项的应用案例
- ITIL介绍及应用案例(三)
- 分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
- Fabric 应用案例
- PIG安装配置及案例应用
- 循序渐进DB2(第2版)——DBA系统管理、运维与应用案例
- Redis应用案例,查找某个值的范围(转)
- 一个开始----大数据思维模式在物联网系统运维应用的一个案例
- AJAX应用【股票案例】
- ITIL介绍及应用案例(一)
- ITIL介绍及应用案例(四)
- yangtingkun常数复合索引应用案例
- 线程高级应用-心得2-同步锁讲解及面试题案例分析
- ITIL介绍及应用案例(二)
- 花生壳端口映射应用案例及设置方法详解
- Struts应用系统案例设计编程讲解
- 正则在sed和grep中的应用