sed文本处理工具常见用法

Posted 滴水微澜

tags:

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

sed是一个非交互式的文本处理工具,它默认不会修改源文件,它是把文件中的内容逐行copy到缓冲区,然后在缓冲区中进行处理,最后把处理的结果显示到屏幕上并清空缓冲区
然后再从文件中读取下一行到缓冲区,重复这个过程,直到所有的行都处理完。如果设置了处理行范围则只处理范围内的行,没有指定时则处理所有的行。

处理选定的行
使用数字表示地址行号,$符号表示最后一行。
# 只查看文件的第3行
sed -n \'3p\' datafile
# 只查看文件的第100行到第200行 
sed -n \'100,200p\' mysql_slow_query.log
2个地址使用“,”分割,表示在这2个范围之间,前后地址可以使用正则或数字表示。
sed \'2,5d\' datafile
#删除第二到第五行
sed \'/My/,/You/d\' datafile
#删除包含"My"的行到包含"You"的行之间的行
sed \'/My/,10d\' datafile
#删除包含"My"的行到第十行的内容

sed工具的命令与选项

选项
-e 进行多重编辑,即对在缓冲区的这一行做连续编辑;前面的编辑完,后面的接着编辑。
-n 取消默认的输出
-f 指定sed脚本的文件名
命令
d 删除行
p 打印行
s 用一个字符串替换另一个
g 在行内进行全局替换
 
正则表达式
sed使用的正则表达式是括在斜杠线"/"之间的模式。
^ 行首定位符 /^my/ 匹配所有以my开头的行
$ 行尾定位符 /my$/ 匹配所有以my结尾的行
. 匹配除换行符以外的单个字符 /m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行
* 匹配零个或多个前导字符 /my*/ 匹配包含字母m,后跟零个或多个y字母的行
[] 匹配指定字符组内的任一字符 /[Mm]y/ 匹配包含My或my的行
 
常见使用方式
p命令
p: 打印指令,n: 取消默认打印。两个同时使用,表示只打印选定的行。
sed \'/my/p\' datafile
#默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。
sed -n \'/my/p\' datafile
#选项-n取消sed默认的打印,p命令把匹配模式my的行打印一遍。
d命令
删除选定的行
sed \'$d\' datafile
#删除最后一行,其余的都被显示
sed \'/my/d\' datafile
#删除包含my的行,其余的都被显示
s命令
字符串替换
sed \'s/^My/You/g\' datafile
#命令末端的g表示在行内进行全局替换,也就是说如果某行出现多个My,所有的My都被替换为You。
sed -n \'1,20s/My$/You/gp\' datafile
#取消默认输出,处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。
 
e选项
连续编辑,对应缓冲区的一行文本,做顺序的连续编辑处理
sed -e \'1,10d\' -e \'s/My/Your/g\' datafile
#选项-e用于进行多重编辑。第一重编辑删除第1-10行。第二重编辑将出现的所有My替换为Your。因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。

 

参考文章:https://blog.csdn.net/gua___gua/article/details/49304699
 
 

以上是关于sed文本处理工具常见用法的主要内容,如果未能解决你的问题,请参考以下文章

sed

文本编辑工具sed

Linux文本处理三剑客grepsedawk用法详解

sed应用

Linux下shell命令用法及常见用例: sed

sed命令用法