博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6-2 9 sed
阅读量:5821 次
发布时间:2019-06-18

本文共 2726 字,大约阅读时间需要 9 分钟。

hot3.png

9.4/9.5 sed

sed是正则表达式工具之一,非常适合对txt文本行进行调整并输出

语法:

1. sed  '/xxx/'p -n txt 匹配-输出2. sed  '/xxx/'d txt    匹配-不输出3. sed  ' x,y 'p -n txt 匹配-输出 			4. sed s'/xxx/yyy/' txt 替换-输出 一行一次5. sed s'/xxx/yyy/' g txt  替换-输出 一行多次6. sed s'/(x)/yyy/' -r txt 替换-输出 包含正则7. sed s'/xxx/yyy/' -i txt 替换-修改 谨慎使用8. sed s'/(x1)(x2)(x3)/\3\2\1/' -r txt 替换-输出 调换位置9. sed -e '/xxx/'p -e '1,10'p -n txt 匹配-输出 多次匹配

高能用法:

  • /(.*)/#&/
    • 整行匹配,&表示原行,替换效果为行首加#
  • /xxx//
    • 将xxx替换为空,效果为删除
  • /([^:]+)(:.*:)([^:]+)/\3\2\1/
    • (1)匹配第一个:前的字符串,
    • (2)匹配两个:及之间的字符串,贪婪匹配让第二个冒号表示最后一个冒号
    • (3)表示最后一个:后的字符串

举例:

打印x-y行 sed -n 'x,y'p file

[root@axiang-03 ~]# sed -n '3,10'p test.txt  daemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin

打印有xx的行 sed n '/xx/'p file

[root@axiang-03 ~]# sed -n '/root/'p test.txt root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

打印以xx结尾的行 sed n '/xx$/' file

[root@axiang-03 ~]# sed -n '/in$/'p test.txtbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin

替换xx为yy sed 's/xx/yy/g' file

[root@axiang-03 ~]# sed 's/olo/nnnnggggg/g' test.txt root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nnnnnggggggindaemon:x:2:2:daemon:/sbin:/sbin/nnnnngggggginadm:x:3:4:adm:/var/adm:/sbin/nnnnnggggggin

删除xx sed 's/xx//g' file

[root@axiang-03 ~]# sed 's/[0-9a-r]//g' test.txt | sed -n '6,7'p sy:x:::sy:/s://sysutw:x:::sutw:/s:/s/sutw

调换行内第一个xx和最后一个yy sed -r 's/(xx)(.*)(yy)/\3\2\1/' file

[root@axiang-03 ~]# sed -r 's/(root)(.*)(bash)/\3\2\1/' test.txt |sed -n '1'p bash:x:0:0:root:/root:/bin/root

行首加入xx sed 's/^.*$/xx&/' file

[root@axiang-03 ~]# sed 's/^.*$/666&/' test.txt  行首加字符 不需要g 666root:x:0:0:root:/root:/bin/bash666bin:x:1:1:bin:/bin:/sbin/nologin

第一组数字和最后一组英文字符调换位置

[root@axiang-03 ~]# cat 2.txt  111eoajfe eoxiua eown  aaaefae 222 wonf ;fafpeona bbb 323!#werw@$333weronoanfe$@#%ccc@!#342 [root@axiang-03 ~]# sed -r 's/([0-9]+)(.*[^a-zA-Z])([a-zA-Z]+)/\3\2\1/' 2.txt aaaeoajfe eoxiua eown  111efae bbb wonf ;fafpeona 222 323!#werw@$cccweronoanfe$@#%333@!#342解释:贪婪匹配,保证最后条件匹配成功且最小匹配。这里如果没有停止条件,只会留给最后条件一个字符
第一个数移动到行尾[root@axiang-03 ~]# sed -r 's/([0-9]+)(.*)/\2\1/' test.txt

场景举例,转变电话号格式

root@lixiang01:~# cat distros.txtUbuntu     8.04    04/24/2008 Fedora     8      11/08/2007 Ubuntu     6.10    10/26/2006 root@lixiang01:~# sed -r 's/([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/\3-\1-\2/' distros.txt 或者加入-r选项,但是匹配文本中的“/”依然需要转义Ubuntu     8.04    2008-04-24Fedora     8      2007-11-08Ubuntu     6.10    2006-10-26

转载于:https://my.oschina.net/u/3579690/blog/1529643

你可能感兴趣的文章
远程部署python程序
查看>>
CodeIgniter用hook钩子实现Interceptor拦截器功能
查看>>
自己照着Promise/A规范写的Promise库
查看>>
Webpack2 的无脑友好错误提示工具
查看>>
学习react router总结
查看>>
关于Subscribe Rancher Events的思考
查看>>
php中的哈希碰撞以及防御
查看>>
解决系统错误 Ubuntu 10.10 "waiting for sound system to respond
查看>>
Java线程一些有趣的技巧与用法
查看>>
SignalR Core尝鲜
查看>>
使用Prometheus和Grafana实现SLO
查看>>
吴恩达获英特尔投资,创业狂人的三家创业公司今何在?
查看>>
敲山震虎?继MongoDB之后,AWS又对Elasticsearch下手了
查看>>
Kubernetes 1.14重磅来袭,多项关键特性生产可用
查看>>
回到网易后开源APM技术选型与实战
查看>>
前端tree优化实践:渲染速度从14.65s到0.49s
查看>>
又拍云刘平阳,理性竞争下的技术品牌提升之道
查看>>
又拍云引领云CDN加速 或成互联网刚性需求
查看>>
阿里巴巴和京东进军美国电商界,分别针对企业用户和普通用户
查看>>
RCurl并行发送多个请求导致内存增长的解决方法
查看>>