一、示例文件及需求:
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命令基本概念与使用方法 - **sed命令简介**: - `sed` 是一个非交互式的流编辑器(Stream Editor),主要用于自动化文本处理任务,尤其适合处理大型文件或者复杂的编辑需求。 - **非交互性**:意味着`...
### Linux Sed 命令详解 #### 概述 ...通过上述示例可以看出,`sed`提供了非常灵活且强大的文本处理能力,是进行文本数据处理和分析的利器之一。掌握其基本用法可以帮助用户高效地完成各种文本处理任务。
3. **命令链**:在一个Sed命令中可以使用分号`;`来连接多个命令,例如`s/pattern1/pattern2/; s/pattern3/pattern4/`。 4. **文件重定向**:`w`命令可以将处理结果写入文件,`>>`操作符可追加写入。 5. **地址...
- 这里首先使用`sed=`来为每一行添加行号,然后通过管道传递给另一个sed命令,该命令将两行合并并使用制表符分隔,从而可以计算每行的长度。 - **去除前导和尾随空白**:`sed 's/^[\t ]*//;s/[\t ]*$//'` - 使用...
根据题目给出的部分内容,我们可以详细解析几个关键的`sed`命令用法: ##### 1. `sed-n'/string/p' filename` - **作用**:仅打印包含指定字符串`string`的行。 - **解析**: - `-n`:默认情况下,`sed`会将所有...
学习`sed`不仅需要掌握基本的命令用法,还要理解其工作流程,熟练运用各种命令组合实现复杂的文本处理任务。通过阅读《玩透sed:探究sed原理》这本书,你可以深入了解`sed`的工作原理,并逐步提升文本处理的技能。书...
本文将深入解析这两个命令的使用方法,并通过实例帮助你快速掌握它们的秘密。 **sed(Stream Editor):** `sed`全称为流式编辑器,它能读取输入流(一个文件或者标准输入)并对每行数据进行处理。`sed`的工作方式...
例如,书中可能会介绍如何使用Sed的命令行选项和内建命令,如`n`(打印下一行)、`p`(打印当前行)、`d`(删除当前行)以及`s`(替换模式空间中的文本)。同时,Awk的部分可能会讲解其内置变量,如`$0`(整个记录)...
本教程将深入探讨这两个命令的使用方法和实际应用。 首先,让我们来看看`sed`。`sed`主要用于对文本进行替换、删除、插入、打印等操作。其基本语法是`sed [选项] '命令' 文件`。其中,常见的选项有 `-n`(抑制默认...
sed的一个常见用法是使用`-n`选项来抑制默认的行输出,然后用`p`命令选择性地打印匹配的行。 例如,`sed 's/old/new/g'`会将所有包含"old"的行替换为"new"。`sed '/pattern/d'`则会删除所有匹配"pattern"的行。 **...
sed的基本语法是`sed 'command' file`,其中`command`可以是替换(s/pattern/replacement/)、删除(d)、打印(p)等。sed的一个强大特性是它可以使用地址范围,这意味着你可以针对文件中的特定行区间执行命令。 ...
使用export 命令传递一个变量到一个内嵌awk 的脚本中 11-19. 使用getopts 命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source 自身的脚本 11-22. exec 的效果 11-23. ...
#### 六、脚本实例分析 - **实例**: 分析一个具体的 shell 脚本,理解其功能和实现方法。 以上内容概括了从给定文件的标题、描述、标签和部分内容中提取的关键知识点。希望这些信息能够帮助初学者更好地理解和掌握...
使用export命令传递一个变量到一个内嵌awk的脚本中 11-19. 使用getopts命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source自身的脚本 11-22. exec的效果 11-23. 一个...
在IT领域,shell脚本是Linux/Unix...总结,这个shell脚本教程涵盖了awk的基本语法、常用命令及其实例,以及sed的用法,对于理解和掌握shell脚本编程具有很大帮助。通过学习和实践,你可以更有效地处理和分析文本数据。
AIX(Advanced Interactive eXecutive)是一种由IBM开发的UNIX操作系统,主要...通过《AIX_5L_V5.3_命令参考大全.exe》这个文件,你可以深入学习每个命令的详细用法、选项和实例,进一步提升在AIX环境下的操作技能。
三、常见命令与用法 1. `echo`:打印字符串到标准输出。 2. `read`:从标准输入读取一行文本,存储到变量中。 3. `cd`:改变当前工作目录。 4. `pwd`:显示当前工作目录。 5. `grep`:在文件或输出中搜索匹配的文本...