码迷,mamicode.com
首页 > 其他好文 > 详细

文本处理sed用法

时间:2020-07-12 16:38:36      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:范围   src   优化   name   开头   多次   之间   http   技术   

文本处理器sed

sed是一种流编辑器,一次处理一行,处理空间被称为模式空间,配合正则表达式与shell脚本使用广泛。

默认打印p选项

选项

-n               关闭默认打印

-i.bak        将原文件复制为.bak备份文件,并修改原文件

-r               配合扩展表达式

支持正则表达式,用/pattern/格式

地址界定

不给定地址      对全文进行处理

单地址               n:指定的行,$最后一行(区别正则表达式是词尾)

/pattern/:被正则表达式匹配到的行

地址范围            n,m 从第n行到第m行

n,+m 从第n行到n+m行

/pattern1/,/pattern2/ 从正则表达式首次匹配的行到第二次匹配的行

~:步进             1~2 从第一行开始,每隔两行=奇数行;

2~2 从第二行开始,每隔两行=偶数行

命令

p                打印

d                 删除

a                 匹配的行的下一行追加指定字符,若需加空格,需使用反斜杠\进行转义

c                 替换指定行为指定内容

w                写匹配到的内容到指定文件

r                  读取指定文件内容到匹配的行的下一行

=                 匹配到的行打印出行号

!                取反,!位于地址界定与命令之间

s                 替换,\1引用正则表达式得第一个分组,\2则代表第二个分组,依次类推,&代表匹配的内容

—- g表示全文替换,如果不加g,表示全文每行的第一个替换

变量用三个单引号引用

示例

用sed获取ifconfig得ip

技术图片

ifconfig | sed -n ‘2p’ |sed -r ‘s/(^[^0-9]+)([0-9.]+)( .*$)/\2/’

正则表达式解释:(以非数字[^0-9]开头的内容)(数字.匹配1次或多次,匹配ip)(任意字符到词尾)

将ifconifg先取第二行,然后将该行分为三个部分,第一个括号表示从开头到非数字,第二个括号表示数字.,第三个表示空格到词尾,然后用\2取第二部分做替换,也就是取到ip部分

优化:只对第二部分进行分组,同时用该分组做替换即可

ifconfig | sed -n ‘2p’ |sed -r ‘s/^[^0-9]+([0-9.]+) .*$/\1/’

替换行内容,在行尾追加

sed -ri.bak ‘/^[[:space:]]+linux16/s@.*@&net.ifnames=0@’ /boot/grub2/grub.cfg

 

文本处理sed用法

标签:范围   src   优化   name   开头   多次   之间   http   技术   

原文地址:https://www.cnblogs.com/zoer/p/13288496.html

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