文档章节

6-2 9 sed

阿想
 阿想
发布于 2017/09/05 21:59
字数 797
阅读 10
收藏 0

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/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator: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/bash
operator:x:11:0:operator:/root:/sbin/nologin

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

[root@axiang-03 ~]# sed -n '/in$/'p test.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon: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/bash
bin:x:1:1:bin:/bin:/sbin/nnnnnggggggin
daemon:x:2:2:daemon:/sbin:/sbin/nnnnnggggggin
adm: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://sy
sutw: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/bash
666bin:x:1:1:bin:/bin:/sbin/nologin

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

[root@axiang-03 ~]# cat 2.txt  
111eoajfe eoxiua eown  aaa
efae 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  111
efae 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.txt
Ubuntu     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-24
Fedora     8      2007-11-08
Ubuntu     6.10    2006-10-26

© 著作权归作者所有

共有 人打赏支持
上一篇: 6-3 9 awk
阿想
粉丝 0
博文 72
码字总数 69742
作品 0
私信 提问
Shell正则三剑客 | sed命令

sed命令基本用法 sed : Stream EDitor sed : 模式空间默认不编辑原文件,仅对模式空间中的数据做处理 : 而后,处理结束后,将模式空间打印至屏幕:sed 'AddressCommand' file ... Address(地...

寰宇01
10/28
0
0
sed 学习笔记

声明: 这些代码只是为了学习和理解sed命令而为之,并不 代表问题的唯一解或最佳解,希望各位拍砖 参考资 料:等 一. 替换 1.神奇变换(y 命令的使 用) 代码: sed 'y/ori_letter_list/target_let...

长平狐
2012/09/03
106
0
linux--sed简单使用

sed ,Stream Editor的简称,常用的文本替换命令 vi test.txt this ia 1 this ia 2 this ia 3 this ia 4 this ia 6 this ia 7 this ia 8 this ia 9 sed '2,4d' test.txt this ia 1 this ia ......

quyf
2014/01/19
450
4
sed工具与正则表达式的使用(shell第四天)

sed工具 【流式编辑器】 —— 非交互,基于模式匹配过滤及修改文本 —— 逐行处理,并将结果输出到屏幕 ——可实现对文本的输出,删除,替换,复制,剪切,导入,导出等各种操作 命令格式: ...

Morning晨丿
04/30
0
0
文本处理三剑客之sed流编辑器

流编辑器 sed 模式空间,默认不编辑原文件,仅对模式空间中的数据做处理;处理结束后,将模式空间中数据打印至屏幕。sed是一个行编辑器。 sed [options] 'Address Command' file ... Option:...

孟东
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ConcurrentHashMap源码解析

初始化 先看看ConcurrentHashMap中几个重要的属性: // 初始化容量大小static final int DEFAULT_INITIAL_CAPACITY = 16;//默认负载因子static final float DEFAULT_LOAD_FACTOR = 0.75f...

grace_233
12分钟前
0
0
java对象的浅拷贝和深拷贝

浅拷贝 java的数据类型有基本数据类型(如:int、long等)和引用数据类型。例如:对象1中有属性a(基本数据类型)和属性b(引用数据类型),在进行浅拷贝到对象2时,属性a复制属性的值给对象...

yangyangyyyy
12分钟前
0
0
SQLServer AlwaysOn在阿里云的前世今生

缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定比例...

阿里云云栖社区
13分钟前
0
0
ubuntu16.04 LNMP搭建 php7.1

sudo apt-get update sudo apt-get install mysql-server mysql-client sudo apt-add-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.1 php7.1-fpm php7.1-cgi p......

一千零一夜个为什么
19分钟前
0
0
阿里云高级技术专家带你全面了解云主机性能评测

钱超,花名西邪,阿里云高级技术专家,超12年老阿里,是云主机性能领域的知名专家。 在目前的云计算测评领域,很多性能测评存在营销的包装,容易引起误导:比如用瞬时性能引导读者得出结论,...

阿里云官方博客
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部