sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] 'command' filename

常用选项:
        -n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。

但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e:直接在指令列模式上进行 sed 的动作编辑;
        -f: 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r: sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i: 直接修改读取的档案内容,而不是由屏幕输出。

常用命令:
        a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;      
        i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
        p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
        s:取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

举例:(假设我们有一文件名为sed.txt)

# sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.

删除某行(对输入流进行操作--input stream)

[root@ant-colonies tmp]# sed '1d' sed.txt        # 删除第一行
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.
[root@ant-colonies tmp]# sed '$d' sed.txt # 删除最后一行
Hello!
ruby is me,welcome to my blog.
end
[root@ant-colonies tmp]# sed '2,$d' sed.txt # 删除第二行到最后一行
Hello!
[root@ant-colonies tmp]#

显示某行

[root@ant-colonies tmp]# sed -n '1p' sed.txt         # 显示第一行
Hello!
[root@ant-colonies tmp]# sed -n '2,$p' sed.txt # 显示第二行到最后一行
ruby is me,welcome to my blog.
end
ruby is me,Welcome to my blog.

模式查询

[root@ant-colonies tmp]# sed -n '/ruby/p' sed.txt          # 查询包括关键字ruby的所有行
ruby is me,welcome to my blog.
ruby is me,Welcome to my blog.
[root@ant-colonies tmp]# sed -n '/^r.*g.$/p' sed.txt # 查询以字母'r'开头,'g.'结尾的行
ruby is me,Welcome to my blog.
[root@ant-colonies tmp]#

增加一行或多行字符串

[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1a drink tea' sed.txt
Hello!
drink tea
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1,3a drink tea' sed.txt
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1,3a drink tea\nor coffee' sed.txt
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
drink tea
or coffee
end
drink tea
or coffee
ruby is me,welcome to my blog. [root@ant-colonies tmp]# cat sed.txt # 说明操作的是输入流
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]#

替换一行或多行

[root@ant-colonies tmp]# sed '1c Hill' sed.txt            # 第一行替换为Hill
Hill
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed '1,2c Hill' sed.txt # 第一行到第二行替换为Hill
Hill
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.

替换一行中的某部分

  格式:sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)

[root@ant-colonies tmp]# sed -n '/rub/p' sed.txt | sed 's/ruby/bird/'        # 替换ruby为bird
bird is me,welcome to my blog.
bird is me,welcome to my blog.
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed -n '/ruby/p' sed.txt | sed 's/ruby//' # 删除ruby
is me,welcome to my blog.
is me,welcome to my blog.

插入(对源文件进行的操作)

[root@ant-colonies tmp]# cat sed.txt                     # 在文件sed.txt中最后一行直接输入"bye"
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
[root@ant-colonies tmp]# sed -i '$a bye' sed.txt
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]#

删除匹配行(对源文件进行的操作)

格式: sed -i '/匹配字符串/d'  filename  (注:若匹配字符串是变量,则需要"",而不是'')

[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
end
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]# sed -i '/en/d' sed.txt
[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]#

替换匹配行中的某个字符串(对源文件进行的操作)

格式: sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/' filename

[root@ant-colonies tmp]# cat sed.txt
Hello!
ruby is me,welcome to my blog.
ruby is me,welcome to my blog.
bye
[root@ant-colonies tmp]# sed -i '/ru/s/ruby/birds/' sed.txt
[root@ant-colonies tmp]# cat sed.txt
Hello!
birds is me,welcome to my blog.
birds is me,welcome to my blog.
bye
[root@ant-colonies tmp]#

linux之sed的用法的更多相关文章

  1. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  2. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  3. linux中sed的用法【转】

    sed命令行格式为:         sed [-nefri]  ‘command’  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...

  4. [转载]linux中sed的用法

    转自:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为:         sed [-nefri]  ‘ ...

  5. 【转载】linux之sed用法

    linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html   sed是一个很好的文件处理工具 ...

  6. [转帖]linux之sed用法

    linux之sed用法 https://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html docker images | awk ' ...

  7. linux之sed用法

    参考 http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行 ...

  8. 【转】 linux之sed用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  9. linux中sed用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

随机推荐

  1. findBug 错误修改指南

      1. EC_UNRELATED_TYPESBug: Call to equals() comparing different types Pattern id: EC_UNRELATED_TYPE ...

  2. webpy+nginx+uwsgi安装配置

    转:(1)安装Nginx1.1 下载nginx-1.0.5.tar.gz并解压1.2 ./configure (也可以增加--prefix= path指定安装路径)此时有可能会提示缺少pcre支持,如 ...

  3. nginx用cookie控制访问权限实现方法

    自己的一个需求需要对a.b.com 下的 /c 这个目录下,cookie d=e 才能访问,如果不是,就重定向到f.html 下面看代码.  代码如下 复制代码 server{       serve ...

  4. iOS开发者福利之精品源码汇总!免费下载

    汇总一些看着不错的源码,有需要的朋友过来下载吧!{:4_102:} 1.用swift制作的色彩炫丽的进度条-KDCircularProgressKDCircularProgress是使用swift制作 ...

  5. mysql中有多少种日志

    Mysql的日志包括如下几种日志: 错误日志 普通查询日志 二进制日志 慢查询日志 Mysql版本 此文档测试mysql的版本为 mysql -V 错误日志 error log Mysql错误日志主要 ...

  6. Stream接口

    数据读写可以看作是事件模式(Event)的特例,不断发送的数据块好比一个个的事件.读数据是read事件,写数据是write事件,而数据块是事件附带的信息.Node 为这类情况提供了一个特殊接口Stre ...

  7. Learning Python 008 正则表达式-003 search()方法

    Python 正则表达式 - search()方法 findall()方法在找到第一个匹配之后,还会继续找下去,findall吗,就是找到所有的匹配的意思.如果你只是想找到第一个匹配的信息后,就不在继 ...

  8. window.parent ,window.top,window.self 详解及parent和opener的区别

    window.parent ,window.top,window.self 详解 在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层fr ...

  9. 【转】‘svn’不是内部或外部命令,也不是可运行的程序

    解决方法:windows安装svn的时候默认是不安装 svn command line这个东西的,重新打开svn的安装exe,选择modify,将“command line client tools” ...

  10. redis系列:redis介绍与安装

    前言 这个redis系列的文章将会记录博主学习redis的过程.基本上现在的互联网公司都会用到redis,所以学习这门技术于你于我都是有帮助的. 博主在写这个系列是用的是目前最新版本4.0.10,虚拟 ...