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

Linux文本处理之sed

时间:2020-04-06 17:11:27      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:log   利用   注意   bbb   style   标准   pre   print   pattern   

sed(stream editer),流编辑器,对标准输出或文件逐行进行处理

一、语法格式:

1、stdout | sed [option] "pattern command"

2、sed [option] "pattern command" file

 

二、sed的选项

-n 只打印模式匹配行(静默模式)

在sed的用法中,所有来自标准输入的内容都要print到屏幕,加-n后只显示经过sed处理的内容

-e 直接在命令行进行sed编辑,默认选项(只有1个时可以省略)

技术图片

 

-f 编辑动作保存在文件中,指定文件执行

技术图片 

 

-r 支持扩展正则表达式

技术图片 

-i 直接修改文件内容(重要)

 技术图片

 技术图片

技术图片

 

 三、sed中的pattern详解

 匹配模式                                     含义

10command                                 匹配到第10行(例:sed -n ‘10p‘ /etc/passwd,cat -n /etc/passwd)---p代表打印print

10,20command                             匹配从第10行开始,到第20行结束

10,+5command                             匹配从第10行开始,到第15行结束(例:sed -n ‘10,+5p‘ /etc/passwd )

/pattern1/command                      匹配到pattern1的行(例:sed -n ‘/\/sbin\/nologin/p‘ /etc/passwd)

/pattern1/,/pattern2/command      匹配到pattern1的行开始,到匹配到pattern2的行结束

10,/pattern1/command                   匹配从第10行开始,到匹配到pattern1的行结束

/pattern1/,10command                   匹配到pattern1的行开始,到第10行匹配结束

 

 四、sed中的编辑命令详解 

查询     p      打印

增加     a      行后追加(sed -i ‘/^root/,/ntp/a this is a test‘ passwd)

           i       行前追加(sed -i ‘/^root/,/ntp/i  AAAAA BBBBB‘ passwd)

           r       外部文件读入,往后追加

           w      匹配行写入外部文件

删除     d       删除

修改     s/old/new        将行内第一个old替换为new

           s/old/new/g     将行内全部的old替换为new

           s/old/new/2g   将行内从2个开始到剩下所有的old替换为new

           s/old/new/ig    将行内old全部替换为new,忽略大小写

sed中引用变量时注意事项:

     (1)、匹配模式中存在变量,则建议使用双引号;

     (2)、sed中需要引入自定义变量时,如果外面使用单引号,则自定义变量也必须使用单引号

 

五、利用sed查询特定内容

查询命令                              含义

1p                                       打印第1行内容

1,10p                                   打印1行到10行的内容

1,+5p                                  打印1行到6行的内容

/pattern1/p                         打印匹配到pattern1的行内容

/pattern1/,/pattern2/p         打印匹配到pattern1的行直到匹配到pattern2的所有行内容

10,/pattern1/p                      打印第10行直到匹配到pattern1的所有行内容

/pattern1/,10p                      打印匹配到pattern1的行到10行的所有行内容

 

六、利用sed删除特定内容

删除命令                              含义

1d                                       删除第1行内容

1,10d                                   删除1行到10行的内容

1,+5d                                  删除1行到6行的内容

/pattern1/d                         删除匹配到pattern1的行内容

/pattern1/,/pattern2/d         删除匹配到pattern1的行直到匹配到pattern2的所有行内容

10,/pattern1/d                      删除第10行直到匹配到pattern1的所有行内容

/pattern1/,10d                      删除匹配到pattern1的行到10行的所有行内容

 技术图片

 

1、删除配置文件中的#开头注释行和空行

sed -i ‘/^#/d;/^$/d‘ file(nginx.conf)

sed -i ‘/[:blank:]*#/d‘ file(#前有0个或多个空格)

2、在配置文件中所有不以#开头的行前面添加*号

sed -i ‘s/^[^#]/\*&/g‘ file---反向引用&

 

七、利用sed修改文件内容

编辑命令                                          含义

1s/old/new                                      替换第1行内容old为new

1,10s/old/new                                  替换1行到10行的内容old为new

1,+5s/old/new                                  替换1行到6行的内容old为new

/pattern1/s/old/new                         替换匹配到pattern1的行内容old为new

/pattern1/,/pattern2/s/old/new         替换匹配到pattern1的行直到匹配到pattern2的所有行内容old为new

10,/pattern1/s/old/new                      替换第10行直到匹配到pattern1的所有行内容old为new

/pattern1/,10s/old/new                      替换匹配到pattern1的行到10行的所有行内容old为new

技术图片

实际应用

sed -i ‘s/[0-9]*//g‘ file(通篇搜索,0个或多个数字替换为空---正则表达式)

 

八、利用sed追加文件内容

技术图片

 

 

技术图片

 

 技术图片

 

 技术图片

 

Linux文本处理之sed

标签:log   利用   注意   bbb   style   标准   pre   print   pattern   

原文地址:https://www.cnblogs.com/xiaoxianxianxian/p/12642732.html

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