文本处理sed用法

Posted zoer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本处理sed用法相关的知识,希望对你有一定的参考价值。

文本处理器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用法的主要内容,如果未能解决你的问题,请参考以下文章

sed文本处理工具常见用法

Linux bash 文本处理命令awk,sed,grep 用法

文本处理三剑客之-sed基础用法

Linux文本处理sed命令高级用法

文本处理sed用法

sed命令用法