码迷,mamicode.com
首页 > 系统相关 > 详细

linux文本处理三剑客——sed

时间:2016-08-10 01:04:21      阅读:447      评论:0      收藏:0      [点我收藏+]

标签:sed示例   高级编辑命令   sed   

sed:
 1,流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下行,这样不断重复,直到文件末尾。
 2,sed默认不编辑原文件内容,仅对模式空间中的数据做处理,除非你使用重定向存储输出。

sed [OPTION] ‘address command‘ [script] file...
 OPTION
 -n:静默模式:不显示模式空间中的行
 -e: 多点编辑
 -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取参数脚本
 -r: 支持使用扩展正则表达式
 -i: 直接修改原文件

 address
 1,不给地址:对全文进行处理
 2,单地址:
  #: 指定的行
  /pattern/:被此处模式所能够匹配到的每一行
 3,地址范围:
  #,#
  #,+#
  /pat1/,/pat2/
  #,/pat1/
 4,~:步进
  1~2 奇数行
  2~2 偶数行
 
 command
 p: 显示模式空间中的内容
 d: 删除模式空间匹配的行
 a \string:在指定的行后面追加新行,内容为string,支持使用\n实现追加多行
 i \string:在指定的行前面追加新行,内容为string,支持使用\n实现追加多行
 c \string:使用string替换模式空间匹配到的单行或多行内容
 w /path/to/somefile: 保存模式匹配的行至指定文件
 r /path/from/somefile:读取指定文件的内容至模式空间中后匹配到的行
 =: 为模式空间中的行打印行号
 !:模式空间中匹配行取反

 支持使用正则表达式
  s/pattern/string/修饰符:查找替换,支持使用其它分隔符,s@@@,s###
  string支持使用后项引用:\1,\2 或者:&
  
  替换标记:
  g: 行内全局替换
  i:忽略字符大小写
  p: 显示替换成功的行
  w /PATH/TO/SOMEFILE:将替换成功的行另存至文件中

高级编辑命令:
 h: 把模式空间中的内容覆盖至保持空间中
 H:把模式空间中的内容追加至保持空间中
 g: 从保持空间取出数据覆盖至模式空间
 G:从保持空间取出内容追加至模式空间
 x: 把模式空间中的内容与保持空间中的内容进行互换
 n: 读取匹配到的行的下一行覆盖至模式空间
 N:读取匹配到的行的下一行追加至模式空间
 d: 删除模式空间中的行
 D:删除当前模式空间开端至\n的内容(不在传至标准
 出),放弃之后的命令,但是对剩余模式空间重新执行sed

sed示例
 sed -n ‘n;p‘ file 打印偶数行

[root@centos7 test]# cat file

1

2

3

4

5

6

7

8

9

10

[root@centos7 test]# sed -n ‘n;p‘ file

2

4

6

8

10

 sed ‘1!G;h;$!d‘ file 逆序显示

[root@centos7 test]# sed ‘1!G;h;$!d‘ file

10

9

8

7

6

5

4

3

2

1

 sed ‘$!N;$!D‘ file 打印最后两行

[root@centos7 test]# sed ‘$!N;$!D‘ file

9

10

 sed ‘$!d‘ file 打印最后一行

[root@centos7 test]# sed ‘$!d‘ file

10

 sed ‘G‘ file 给每行后面添加一个空白行

技术分享

 sed ‘g‘ file 删除所有行

技术分享

 sed ‘/^$/d;G‘ file 给每行后面添加一个空白行

技术分享

 sed ‘n;d‘ file 打印奇数行

[root@centos7 test]# sed ‘n;d‘ file

1

3

5

7

9

[root@centos7 test]#

 sed -n ‘1!G;h;$p‘ file 逆序显示

[root@centos7 test]# sed -n ‘1!G;h;$p‘ file

10

9

8

7

6

5

4

3

2

1

 

本文出自 “爱情防火墙” 博客,请务必保留此出处http://183530300.blog.51cto.com/894387/1836287

linux文本处理三剑客——sed

标签:sed示例   高级编辑命令   sed   

原文地址:http://183530300.blog.51cto.com/894387/1836287

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!