`
haoningabc
  • 浏览: 1482155 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sed常用

sed 
阅读更多
转http://blog.chinaunix.net/space.php?uid=26183957&do=blog&id=3023196
使用 sed 进行编辑
本文讨论的最复杂和最强大的编辑工具是 sed(流编辑器)。它是一个文本编辑器,但是与诸如 ed 等文本编辑器不同,它编辑输入流并写到输出流。因此,它对于编辑命令输出或对于使用其他工具对文件进行预处理非常有用——然后您可以将该文本通过管道直接输出给 sed,以进行快速编辑。但是 sed 还可以操作文件,并且其脚本语言具有高级模式匹配功能,因此它是用于执行任何类型的快速文本编辑的理想选择——例如对一组文件进行快速搜索和替换。事实上,它是现有用于文本编辑的最流行命令行工具之一。
sed 接受包含任何数量命令的脚本,后面跟着可选的指定输入文件的选项;缺省情况下,它读取标准输入。某些版本的 sed 有一个 -i 选项,此选项指定应该编辑的输入文件。(如果没有此选项,则读取输入文件,而不对其执行写入。)如果您安装的版本支持此选项,则应该使用它——它允许您使用单个命令对任何指定的文件执行快速编辑操作。
sed -i script filespec

以下示例假设您的 sed 支持 -i 选项。否则,您必须使用 Shell 重定向将输出保存到新文件,并在另一个步骤将新文件重命名为旧文件,从而执行临时文件中转:
sed script file > newfile; mv newfile file

对于多个文件,您必须执行循环:
for i in *; { sed script $i > $i.new; mv $i.new $i; }

替换文件中的文本
您可以使用 s/searchstring/replacestring/ 构造将给定字符串替换为另一个字符串。若要替换某个文件中每行上的第一个 old 实例,可以使用以下命令:
$ sed -i 's/old/new/' file

若要替换每个实例,可以对该搜索追加 g 选项。此项技术对于修复输入错误或替换一个或一组文件中的重复单词、短语或其他内容非常理想。
$ sed -i 's/Esclipse/Eclipse/g' *.xml

您可以在输入表达式中将字符包括在方括号中,但是,如果您在替换文本中使用方括号,则会将它们视为普通字符:
$ cat file
This is the beginning.
This is the middle.
This is the end.
$ sed 's/[Tt]h/[Tt]h/g' file
[Tt]his is [Tt]he beginning.
[Tt]his is [Tt]he middle.
[Tt]his is [Tt]he end.

当要搜索或替换的短语包括斜杠字符时,应使用它来定义新的分隔符:
$ sed -i 's,/usr/local/websphere,/usr/websphere,' file

您还可以将包含某个模式的整个行替换为某些新文本:
$ sed -i 's/.*pattern.*/LINE DELETED/' file

编辑匹配的模式
回想一下在模式中将字符分组在一起的方括号示例,以及如何在替换文本中将它们视为普通字符。如果您希望在替换文本中包括字面匹配的模式,该怎么办呢?可以使用“和”号 (&) 来实现。此方法对于通过在匹配模式之前或之后放置文本来编辑匹配模式是非常有用的:
$ cat file
This is the beginning.
This is the middle.
This is the end.
$ sed 's/[Tt]h/>&</g' file
>Th<is is >th<e beginning.
>Th<is is >th<e middle.
>Th<is is >th<e end.

在匹配模式之后插入文本
使用 a 命令在给定的匹配模式后面添加一行文本:
$ sed -i '/pattern/a text' file

这并不替换与模式匹配的文本——它只是在第一个包含该模式的行后面添加文本。
在行开头插入文本
若要在每行开头插入文本,可以匹配脱字号元字符并提供要插入的文本。下面显示了如何向文件中的所有行添加电子邮件样式引用:
$ sed 's/^/> /' input.txt
> This line has trailing blanks.
> This line does not.
$

在行尾插入文本
同样的原理也适用于在每行结尾插入文本——匹配美元符号元字符并提供要插入的文本。下面演示了如何模拟 AIX cat 的 -vet 选项来标记尾随空格:
$ sed 's/$/$/' file
This line has trailing blanks.   $
This line does not.$
$

删除文件中的行
d 命令删除给定的行。您可以在它前面附加行号、范围、要匹配或包括在斜杠中的模式。
若要删除文件中的第一行,可以使用以下命令:
$ sed -i 1d file

若要删除第 1 至第 10 行,可以使用以下命令:
$ sed -i 1,10d file

若要删除“BEGIN QUOTE”字符串的第一个实例到“END QUOTE”字符串的第一个实例之间的所有行,可以使用以下命令:
$ sed -i '/BEGIN QUOTE/,/END QUOTE/d' file

若要删除当前目录中扩展名为 .xml 的所有文件中第一行包含“<record>”并且最后一行包含“"</record>"”的所有文本部分,可以使用以下命令:
$ sed -i '/<record>/,/<\/record>/d' *.xml

若要删除从第一行直到第一个空白行的所有内容,可以使用以下命令:
$ sed -i '/^> /d' file

(当在电子邮件消息或 Usenet 文章中使用时,前述单命令行程序将除去所有标头。)
若要删除所有以电子邮件样式引用开头的行,可以使用以下命令:
$ sed -i /^$/d file

若要删除文件的最后一行,可以使用以下命令:
$ sed -i '$d' file

删除尾随空格
如果文件中的行包含需要清除的尾随空格字符,在文本编辑器中人工查找并删除它们会非常麻烦,但是使用 sed 完成此任务将成为一个快速的单行操作。您可以搜索行尾之前出现一次或多次的字面空格字符,并将其替换为空字符:
$ cat -vet input.txt

This line has trailing blanks.    $
This line does not.$
$ sed -i 's/ *$//' input.txt
$ cat -vet input.txt

This line has trailing blanks.$
This line does not.$
$
分享到:
评论

相关推荐

    linux sed 常用用法举例01

    本篇文章将重点介绍`sed`的一些常用用法,以帮助读者更好地理解和应用这个工具。 1. **基本语法** `sed`的基本命令格式是: ``` sed [选项] '命令' 文件 ``` 其中,`选项`通常用于设置工作模式,`命令`是你要...

    sed用例(比较常用的例子)

    ### sed 常用用例详解 #### 一、显示通篇文档,除了两个正则表达式之间的内容 **命令**: `sed '/Iowa/,/Montana/d'` **解释**: 此命令会删除从匹配到 “Iowa” 开始到匹配到 “Montana” 结束之间的所有内容。...

    sed&awk;手册

    **Sed常用选项** - `-n`:抑制默认的输出,只有匹配到模式空间的行才会被打印。 - `-e`:添加多个编辑命令。 - `-i`:在原文件上进行编辑,不保留备份。 - `-f`:从文件中读取编辑指令。 **Sed/awk的特点** - **...

    sed 使用手册linux unix 下常用的文本处理工具。用来处理格式化文本

    ### sed 常用命令与应用 #### 1. 删除空行 ``` sed '/^$/d filename' ``` 这条命令会删除`filename`文件中的所有空行。 #### 2. 删除纯空白行 ``` sed '/^[[:space:]]*$/d filename' ``` 此命令用于删除文件`...

    sed命令详解 快速入门

    sed常用命令 | 命令 | 描述 | | --- | --- | | `a\文本` | 在当前行后面添加一行文本。 | | `b 标签` | 分支到脚本中带有指定标签的位置。 | | `c\新文本` | 替换当前行的文本。 | | `d` | 删除当前行。 | | `D` |...

    有关sed的运用

    #### 三、SED常用命令解析 1. **-e 脚本**:指定一个或多个SED脚本执行。 - 示例:`sed -e 's/123/1234/' a.txt` - 解析:将文件a.txt中所有出现的“123”替换为“1234”。 2. **-f 文件**:从文件中读取SED脚本...

    centOS丛书sed和awk

    **1.4 sed常用选项** - `-n`: 关闭自动输出功能,仅在命令中显式指定输出时才输出内容。 - `-r`: 使用扩展正则表达式(Extended Regular Expressions)进行模式匹配。 **1.5 sed编辑命令** - **地址**: 用于指定要...

    sed的常用命令思维导图

    sed的常用命令大全集合,适用于小白的快速入手。

    LINUX的awk和sed的常用用法

    LINUX 的 awk 和 sed 的常用用法 awk 是一种功能强大的文本处理工具,它可以在文件或字符串中基于指定规则浏览和抽取信息。awk 语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息。 调用 awk 有三种...

    SED单行脚本快速参考 / sed1line

    以上是SED单行脚本的常用技巧,能够帮助用户快速处理文本数据,进行各种文本格式的转换,以及增加文本的可读性。SED命令的强大之处在于其灵活性和强大的文本处理能力,使得编辑操作简单高效。在Unix和类Unix系统中,...

    UNIX 下SED使用全解手册

    一般 sed 最常用在编辑那些需要不断重覆某些编辑动作的文件上 , 例如将文件中的某个字串替换成另一个字 串等等。这些相较於一般 UNIX 编辑器(交谈式的, 如 vi、emacs)用手动的方式修改文件 , sed 用起来较省力。

    玩透sed:探究sed原理

    3. **命令替换(Command Substitution)**:`s/pattern/replacement/flags`是`sed`最常用的命令,用于替换匹配到的模式。`flags`是可选的,如`g`全局替换,`i`忽略大小写,`p`打印替换后的行。 4. **缓冲区(Buffer...

    SED1330/SED1335液晶控制器的应用

    - **内置字符发生器**:预置了常用的字符库,简化了字符显示的编程工作。 - **灵活的时序控制**:支持不同系列MPU的操作时序,提高了系统的兼容性和扩展性。 #### 四、SED1330的应用场景 鉴于SED1330的出色性能和...

    sed1520_51单片机_SED1520_badlyzgv_源码

    而SED1520是一款常用的LCD控制器,常用于驱动字符或点阵液晶显示模块。本文将围绕"sed1520_51单片机_SED1520_badlyzgv_源码"这个主题,深入解析SED1520与51单片机的交互以及badlyzgv开发的相关代码。 一、SED1520 ...

    GNU sed manual说明书

    而sed还具有一些高级命令,通常不太常用,但在处理复杂文本任务时非常有用。 GNU sed支持基本的正则表达式(BRE)和扩展的正则表达式(ERE),还提供了字符类和括号表达式等,允许用户匹配特定的文本模式。例如,...

    SED1520 C语言驱动程序

    SED1520是飞利浦公司推出的一款常用的LCD控制器,常用于驱动128x64点阵的液晶屏,如12232 LCD模块。本文将深入探讨如何用C语言编写针对SED1520的驱动程序,并结合Keil开发环境进行程序设计,以便在实际项目中灵活...

    sed命令.docx

    **sed命令详解** **1. sed命令的基本概念** sed(stream editor)是一个强大的文本处理工具,主要用于对文本文件进行非交互式的编辑操作。它的工作方式是逐行读取输入文件,将当前处理的行存储在临时缓冲区(模式...

    SED与AWK 高清第三版

    在学习sed和awk时,了解它们的基本语法和常用命令是首要的。sed的操作主要包括插入、删除、替换、打印等,而awk则需要理解其工作模式(BEGIN、END、模式规则)、字段分隔符、内置变量和函数等概念。通过实际的案例...

    sed(windows)

    ### 常用`sed`命令 1. **替换(s)**:`s/old/new/g` 将所有出现的 "old" 替换为 "new",`g` 表示全局替换。 2. **删除(d)**:`d` 删除匹配到的行。 3. **插入(i)**:`i\text` 在匹配行之前插入文本。 4. **...

Global site tag (gtag.js) - Google Analytics