sed

Posted

tags:

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

sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送到屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序。


打印某行

格式:sed -n ‘n‘p filename 单引号内的n是一个数字,表示第几行。-n是只显示我们要打印的行。p将结果打印出来。

sed -n ‘/root/‘p test.txt

技术分享图片

sed打印出来没有颜色显示,grep打印有颜色显示。


sed同样可以使用{}、+、?、|、()这些符号,使用时必须加上脱义符\。(使用.*不用加脱义符)

加上-r参数时可以不用脱义符。

技术分享图片


把所有行都打印出来

sed -n ‘1,$‘p test.txt  #$指行的结尾。

技术分享图片


指定一个区间打印

sed -n ‘1,3‘p test.txt

#打印第一到三行,单个数字n为打印第几行。

技术分享图片


查找以某个字符串开头或结尾

技术分享图片


注意:打印包含某个字符串的时候需要使用//将字符串放到里面。例如 sed -n ‘1‘p test.txt 这条命令是打印第一行。

sed -n ‘/1/‘p test.txt 这条命令是打印含有字符1的行。

-e选项可以实现多个行为

技术分享图片


加上I参数后,不区分大小写。

技术分享图片



删除指定的行

使用d参数,d表示删除动作

sed ‘1‘d test.txt #删除文件的第一行。

sed ‘1,20‘d test.txt #删除文件的1至20行。

技术分享图片


这个删除操作进阶是在显示器屏幕上不显示这些行而已,并没有对文档进行操作。

技术分享图片


删除某个字符串匹配的行

sed ‘/nologin/‘d test.txt #删除含有nologin字符串的行。

技术分享图片


-i 参数,直接修改文件的内容

sed -i ‘1,20‘d test1.txt #将文件test1.txt中的1到20行删除

技术分享图片



替换字符或字符串

s就表示替换的动作。参数g表示本行全局替换,如果不加g则只替换本行出现的第一个。

除了使用/作为分隔符外,还可以使用@和#作为分隔符。

sed ‘1,2 s /ot/to/g‘ test.txt

#将文档中第1、2行中所有的ot替换成to

技术分享图片

不加参数g就只替换第一个ot

技术分享图片


删除文件中的所有字母或所有数字

就是将文件中的所有字母或数字替换成空。

sed ‘s/[0-9]//g‘ test.txt #删除文件中所有数字

技术分享图片


sed ‘s/[a-zA-Z]//g‘ test.txt#删除文件中所有字母

技术分享图片



调换两个字符串的位置

技术分享图片


在某一行前面加上字符串

技术分享图片


a,i都是新增

a是目前的下一行  i是目前的上一行

sed ‘2a drink tea‘ test.txt #在文件第二行后增加一行

sed ‘2i drink beer‘ test.txt #在文件第二行前增加一行

技术分享图片技术分享图片


本文出自 “网管的学习之路” 博客,请务必保留此出处http://754599082.blog.51cto.com/11510506/1983834

以上是关于sed的主要内容,如果未能解决你的问题,请参考以下文章

Sed教程之Sed语法

sed和awk之sed篇(含sed高级用法)

sed 在指定行插入?

sed的增删改查sed常见问题

sed打印指定范围

sed删除怎么生效