您的位置:首页 > 其它

第7章 sed、gawk介绍与正则表达式-----------(sed编辑器简单使用)

2017-03-14 00:00 771 查看

第7章 sed、gawk介绍与正则表达式

7.1sed编辑器

sed编辑器称为流编辑器(stream editor),与普通的交互式文本编辑器相对应。在交互式文本编辑器中,可以交互式地使用键盘命令插入、删除、或者替换数据中的文本。流编辑器将根据在编辑器处理数据之前事先提供的规则集编辑数据流。

sed编辑器可以根据输入命令行的命令或者存储在命令文本文件中的命令处理数据。它每次从输入读取一行数据,将该数据与所提供的编辑器命令进行匹配,根据命令修改数据流中的数据,然后将新数据输出到STDOUT。在流编辑器将全部命令和一行数据匹配匹配完之后,它读取下一行数据,并重复上述过程。处理完数据流中的全部数据行之后,流编辑器停止

由于是按顺序逐行应用命令,所以sed编辑器进行编辑仅需浏览数据流一次。这使得sed编辑器比交互式编辑器要快很多,因此可以动态快速修改文件中的数据。使用sed命令的格式是:sed options script file

options参数允许自定义sed命令的行为,它包含的选项如下:



script参数指定要应用于流数据的单个命令。如果需要多个命令,就必须使用-e选项在命令行中指定,或者使用-f选项在单独的文件总指定。处理数据可用的命令很多。

7.1.1在命令行中定义编辑器命令

默认情况下,sed编辑器将指定的命令应用于STDIN输入流。这就允许将数据直接管道传送给sed编辑器处理。那面使用s命令进行文本替换:



sed命令执行与返回数据几乎同时进行。它处理每一行数据的同时就显示结果。在sed编辑器结束处理整个文件之前,就可以看到结果。

PPAP内容:

Pen pineapple Apple Penpineapple pen
Pen pineapple Apple Penpineapple pen
Pen pineapple Apple Penpineapple pen
Pen pineapple Apple Penpineapple pen
ApplePen Apple Apple ApplePen ApplePen
ApplePen Apple Apple
Pen pineapple Apple Penpineapple pen
ApplePen Apple Apple ApplePen Apple Apple
ApplePen Apple Apple
Pen pineapple Apple Penpineapple pen
Pen pineapple Apple Penpineapple pen




sed编辑器并不修改文本文件中的数据。它只将修改后的文本发送到STDOUT。原文件中的数据没有做修改,依然是原数据。

7.1.2在命令行中使用多个编辑器命令

要从sed命令行执行多个命令,只需要使用-e选项:



两个命令将同时应用于文件中的每一行数据。命令必须用分号隔开,且在命令结尾和分号之间不能有任何空格。

在bash shell中,可以使用次提示符,而不是分号分隔命令。只需输入前单引号打开脚本,bash将继续提示输入更多的命令,直到输入后单引号:



必须记住:要在后单引号出现的同一行上完成该命令,因为bash检测后引号之后,就处理命令。一旦开始,sed命令就会将指定的每一个命令应用文本文件中每一行数据

7.1.3从文件读取编辑器命令

如果 有太多的sed命令要处理,那么将它们保存在一个独立的文件中,然后在sed命令中使用-f选项指定文件通常更方便。

replace文件:

s/Apple/Banana/
s/Pen/Oriange/
s/pineapple/applepine/




这种情况,不需要在每个命令后放一个分号。sed编辑器知道一行包含单独一个命令。同在命令行输入命令完全一样,sed编辑器从指定的文件读取并将它们应用于数据文件中的每一行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐