sed的用法

原创 2012年03月26日 13:25:01

今天遇到sed的相关用法,再次对sed的用法进行总结;


1. 替换命令

    sed 's/{old_value/{new_value}/}'

    实现使用new_value替换old_value的操作;例如

    echo it is not your fault | sed 's/fault/problem/'

    it is not your prolbem


    多个修改替换,可以采用-e的方式,也可以使用;多次隔开。例如

    第一种方式:echo it is not your fault | sed -e 's/your/my/' -e 's/fault/problem/'

    第二种方式:echo it is not your fault | sed 's/your/my/ ; s/fault/problem/'

    两条语句的效果是一样的,输出都是:

    it is not my problem

    第三种方式:sed后加一个撇号,然后回车,可以采用多行输入的方式.

  

    全局修改

    sed命令类似于替换命令,每次都处理每行中第一个出现的选定序列,要实现全局的修改,需要使用下面的格式

    sed 's/{old_value}/{new_value}/g'


   匹配替换

   sed命令可以实现特定匹配字段的字符替换,例如

   sed '/your/ s/fault/problem'将your后面的fault改成为problem。

   需要注意的一点:sed执行替换命令是每行单独执行的,它处理过程以行为单位,如果在某一行找到匹配内容,那么将从改行的第一处进行替换修改,加入/g也是在改行的所有的位置进行修改。。如果在改行中没有找到前面的匹配字段,则不进行修改。例如file

    it is not your fault, but my fault

    it is not my fault, but his fault

    fault is not the reason

    在上面的文档中,如果采用 sed '/your/ s/fault/problem/' file 那么只有在第一行找到相关的your匹配字段,那么修改第一个fault为problem,似乎执行正确。

    但是,如果采用 sed '/my/fault/ s/fault/problem/' file 那么在前两行都可以匹配到my,那么就会替换前两行中第一次出现fault的地方为problem,输出为:

    it is not your problem, but my fault

    it is not my problem, but his fault

    fault is not the reason

    同样的,如果加/g,那么也只是在当前行的所有值替换,因此需要谨慎使用。

    还需要注意的就是,这里只是改变了显示,想要保存到指定文档中,需要重定向。

 

   源文件/脚本文件

   sed -f script-file file

   sed命令可以使用脚本文件,-f后面可以为相应的脚本文件,值得注意的是,脚本文件中不使用撇号

  

  限制行

  编辑器默认查看输入到流编辑器中的每一行,且默认在输入到流编辑器中的每一行上进行编辑。这可以通过在发出命令之前指定约束条件来进行修改。例如

  sed '3,4 s/fault/problem/' file 默认将第三行和第四行的fault值进行替换


  禁止显示

  "-n" 覆盖了所有的显示,并且不显示任何一行,而无论它们是否被编辑操作修改。


2.删除行

   sed '{what to find} d'

   删除相应的行,这里由what to find限制到某一特定行

  上三角号 (^) 表示一行的开始

  美元符号 ($) 代表文件的结尾,或一行的结尾

 

  sed '/fault/ d ' file

  删除file中包含fault的行

  sed '/fault/ !d' file

 删除file中包含fault之外的所有行

  sed '/^$/ d' {filename}

  删除文件中的所有空白行

  sed ‘1,/^$/ d’ {filename}

  删除文件中第一行到第一个空行


3.插入/添加/写到文件

  sed '3i *****'  从第三行插入

  sed '3a*****'  从第三行添加

  sed ‘×××××× 1,3w new_file’ 重新将第一行到第三行写到新文件中


4.修改

sed '/file/ c **************'

修改这里是指,将匹配到的整行进行修改,将原来的整行修改为新的内容,只要匹配,整行进行替换



 

^: 表示句首. 如 ^abc 表示以 abc 为首的句子.
$: 表示句尾. 如 abc$ 表示以 abc 结尾的句子.
\<: 表示词首. 如 \<abc 表示以 abc 为首的詞.

\>: 表示词尾. 如 abc\> 表示以 abc 結尾的詞.


本文主要参考:

http://flierlh.iteye.com/blog/132809

http://fangfang0717.blog.51cto.com/236466/130525/

相关文章推荐

sed 用法介绍.pdf

  • 2009年01月03日 18:09
  • 706KB
  • 下载

sed高级用法.html

  • 2009年03月20日 16:06
  • 24KB
  • 下载

sed高级用法:模式空间(pattern space)和保持空间(hold space)

环境:centos 6.4  sed版本:sed-4.2.1-10.el6.x86_64 前面的基本用法已经可以满足90%的需要,人个认为想要真正掌握sed,还需要学习一下sed的高级用法...

sed 用法介绍

  • 2008年04月03日 22:16
  • 718KB
  • 下载

Linux sed常规用法小结

sed是一个非交互性的流编辑器,是stream editor的缩写。sed每次只处理一行内容,可以对文本或标准输入流进行处理。需要注意的是,sed并不直接操作初始数据,它操作的是一份原始数据的拷贝。s...

linux sed 命令参数及用法详解

sed概述 sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一, 因此,有必要彻底地了解其应用 Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此...
  • jesseen
  • jesseen
  • 2012年09月18日 08:35
  • 485

linux shell 系列 sed 命令基本用法实例-①set命令选项的应用案例

首先先给大家看一个我写的程序的源码文件msg.c,就以这个文件作为演示,大家可以看到文件的部分内容及对应的行号: 图1 ①.以指定行号查看文件对应行的内容 图2 终端输入sed命令:  se...

linux sed命令参数及用法详解---linux 利用script来处理文本文件

linux sed命令参数及用法详解---linux 利用script来处理文本文件 sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一, 因此,有必要彻底地了解其应用...

Linux下Sed命令的用法2

使用sed命令行格式为:               [root@localhost ~]# sed [-nefri] command 输入文本         常用选项:         ...

sed各种修改文本用法总结

基本用法: sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一, 因此,有必要彻底地了解其应用 Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工...
  • lhq9220
  • lhq9220
  • 2011年06月06日 13:56
  • 7370
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sed的用法
举报原因:
原因补充:

(最多只允许输入30个字)