`

sed实例分析(一)---P与D命令的用法

阅读更多

一、示例文件及需求:

catfile

111111111111111111

222222222222222222

=333333333333333333

444444444444444444

如果某行以=开始,则合并到上一行并替代=为空格

二、sed脚本执行结果:

sed-e:a-e'$!N;s/\n=//;ta'-e'P;D'file

111111111111111111

222222222222222222333333333333333333

444444444444444444

三、命令说明:

:a定义一个标签位置

$!N如果不是最后一行,就读入新行附加于patternspace之后,以“\n”分隔

s/\n=//如果发现了\n=的,替换为空格

ta如果找到了替换,从标签a处再执行,否则向下走

P打印patternspace中的第一个\n之前的内容

D删除patternspace中的第一个\n之前的内容,不打印模式空间,如果有模式空间还有数据,不会读取新行,继续开始下一循环

四、执行流程分析:

第一行执行,没有找到 \n= 打印第一行,读入第二行,脚本头部执行
第二行执行,找到 \n= ,替换为空格,从标签a处再执行
第三行执行,没有找到 \n= 打印第二三行的合并和第四行,读入新行,没有了,结束

 

COMM:代表命令,PATT:代表patternspace的内容,其他为sed输出的内容

PATT:111111111111111111$

COMM::a

COMM:$!N

PATT:111111111111111111\n222222222222222222$

COMM:s/\n=//

PATT:111111111111111111\n222222222222222222$

COMM:ta

COMM:P

111111111111111111

PATT:111111111111111111\n222222222222222222$

COMM:D

PATT:222222222222222222$

COMM::a

COMM:$!N

PATT:222222222222222222\n=333333333333333333$

COMM:s/\n=//

PATT:222222222222222222333333333333333333$

COMM:ta

COMM:$!N

PATT:222222222222222222333333333333333333\n444444444444444444$

COMM:s/\n=//

PATT:222222222222222222333333333333333333\n444444444444444444$

COMM:ta

COMM:P

222222222222222222333333333333333333

PATT:222222222222222222333333333333333333\n444444444444444444$

COMM:D

PATT:444444444444444444$

COMM::a

COMM:$!N

PATT:444444444444444444$

COMM:s/\n=//

PATT:444444444444444444$

COMM:ta

COMM:P

444444444444444444

PATT:444444444444444444$

COMM:D

五、参考:

http://bbs.chinaunix.net/thread-277289-1-1.html

 

分享到:
评论

相关推荐

    sed命令和awk编程教程

    #### 一、sed命令基本概念与使用方法 - **sed命令简介**: - `sed` 是一个非交互式的流编辑器(Stream Editor),主要用于自动化文本处理任务,尤其适合处理大型文件或者复杂的编辑需求。 - **非交互性**:意味着`...

    linux sed命令详解

    ### Linux Sed 命令详解 #### 概述 ...通过上述示例可以看出,`sed`提供了非常灵活且强大的文本处理能力,是进行文本数据处理和分析的利器之一。掌握其基本用法可以帮助用户高效地完成各种文本处理任务。

    linux-Sed命令详解.zip

    3. **命令链**:在一个Sed命令中可以使用分号`;`来连接多个命令,例如`s/pattern1/pattern2/; s/pattern3/pattern4/`。 4. **文件重定向**:`w`命令可以将处理结果写入文件,`>>`操作符可追加写入。 5. **地址...

    sed 实例讲解

    - 这里首先使用`sed=`来为每一行添加行号,然后通过管道传递给另一个sed命令,该命令将两行合并并使用制表符分隔,从而可以计算每行的长度。 - **去除前导和尾随空白**:`sed 's/^[\t ]*//;s/[\t ]*$//'` - 使用...

    sed command

    根据题目给出的部分内容,我们可以详细解析几个关键的`sed`命令用法: ##### 1. `sed-n'/string/p' filename` - **作用**:仅打印包含指定字符串`string`的行。 - **解析**: - `-n`:默认情况下,`sed`会将所有...

    玩透sed:探究sed原理

    学习`sed`不仅需要掌握基本的命令用法,还要理解其工作流程,熟练运用各种命令组合实现复杂的文本处理任务。通过阅读《玩透sed:探究sed原理》这本书,你可以深入了解`sed`的工作原理,并逐步提升文本处理的技能。书...

    实例秒解sed和awk的秘密

    本文将深入解析这两个命令的使用方法,并通过实例帮助你快速掌握它们的秘密。 **sed(Stream Editor):** `sed`全称为流式编辑器,它能读取输入流(一个文件或者标准输入)并对每行数据进行处理。`sed`的工作方式...

    Sed与awk第三版 高清版

    例如,书中可能会介绍如何使用Sed的命令行选项和内建命令,如`n`(打印下一行)、`p`(打印当前行)、`d`(删除当前行)以及`s`(替换模式空间中的文本)。同时,Awk的部分可能会讲解其内置变量,如`$0`(整个记录)...

    sed与awk.zip

    本教程将深入探讨这两个命令的使用方法和实际应用。 首先,让我们来看看`sed`。`sed`主要用于对文本进行替换、删除、插入、打印等操作。其基本语法是`sed [选项] '命令' 文件`。其中,常见的选项有 `-n`(抑制默认...

    awk,sed,grep总结.chm

    sed的一个常见用法是使用`-n`选项来抑制默认的行输出,然后用`p`命令选择性地打印匹配的行。 例如,`sed 's/old/new/g'`会将所有包含"old"的行替换为"new"。`sed '/pattern/d'`则会删除所有匹配"pattern"的行。 **...

    awk、sed和grep

    sed的基本语法是`sed 'command' file`,其中`command`可以是替换(s/pattern/replacement/)、删除(d)、打印(p)等。sed的一个强大特性是它可以使用地址范围,这意味着你可以针对文件中的特定行区间执行命令。 ...

    Advanced Bash-Scripting Guide <>

    使用export 命令传递一个变量到一个内嵌awk 的脚本中 11-19. 使用getopts 命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source 自身的脚本 11-22. exec 的效果 11-23. ...

    shell编程-2

    #### 六、脚本实例分析 - **实例**: 分析一个具体的 shell 脚本,理解其功能和实现方法。 以上内容概括了从给定文件的标题、描述、标签和部分内容中提取的关键知识点。希望这些信息能够帮助初学者更好地理解和掌握...

    Linux高级bash编程

    使用export命令传递一个变量到一个内嵌awk的脚本中 11-19. 使用getopts命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source自身的脚本 11-22. exec的效果 11-23. 一个...

    shell脚本教程.doc

    在IT领域,shell脚本是Linux/Unix...总结,这个shell脚本教程涵盖了awk的基本语法、常用命令及其实例,以及sed的用法,对于理解和掌握shell脚本编程具有很大帮助。通过学习和实践,你可以更有效地处理和分析文本数据。

    AIX V5.3命令

    AIX(Advanced Interactive eXecutive)是一种由IBM开发的UNIX操作系统,主要...通过《AIX_5L_V5.3_命令参考大全.exe》这个文件,你可以深入学习每个命令的详细用法、选项和实例,进一步提升在AIX环境下的操作技能。

    脚本:Shell脚本

    三、常见命令与用法 1. `echo`:打印字符串到标准输出。 2. `read`:从标准输入读取一行文本,存储到变量中。 3. `cd`:改变当前工作目录。 4. `pwd`:显示当前工作目录。 5. `grep`:在文件或输出中搜索匹配的文本...

Global site tag (gtag.js) - Google Analytics