[Linux Shell学习系列十四]sed和awk-1.sed编辑器基础

D27

sed和awk是我们处理文本文件的有力工具。

 

sed是用来解析和转换文本的工具,它使用简单,是简洁的程序设计语言。

sed是最早的支持正则表达式的工具之一,并且仍用于文本处理,特别是替换指令。

1. sed简介

sed是非交互式的面向数据流的编辑器。之所以说它是面向数据流的,是因为像很多Unix程序程序一样,输入通过程序被重定向到标准输出。

输入通常来自文件,也可以来自键盘;输出默认是发送到终端屏幕,也可以重定向到文件。

sed可以通过解释脚本来工作,该脚本中指定了将要执行的动作。

使用sed做如下操作:

1)自动化的编辑一个或多个文件;

2)简化在多个文件中执行相同编辑的任务;

3)编写转换程序。

 

2. sed的模式空间

sed维护一种模式空间,即一个工作区或临时缓冲区,当使用编辑命令时,将在那里存储单个输入行。

注:sed一次处理一行输入的优点是在读取非常庞大的文件时不会出现问题。一般的文本编辑器必须将整个文件(或者它庞大的一部分)读入内存,这将会产生内存溢出或在处理庞大文件时速度非常慢。

初始时,模式空间包含单个输入行的备份,之后在这一行上执行每个命令。注意第二个替换指令不匹配最初的输入行,匹配模式空间中发生了变化的当前行。当应用了所有的指令后,当前行被输出且输入的下一行被读入模式空间。然后sed脚本中的所有命令应用于新读入的行。结果是:任何一个sed命令都可以为下一个命令修改模式空间的内容。模式空间的内容是动态的,而且并不总是匹配最初的输入行。

 

2. 基本的sed编辑命令

语法:

sed [OPTIONS]... ‘COMMAND‘ [FILE]...

sed [OPTIONS] -f SCRIPTFILE [FILE]...

常用的选项:

选项 说明
-e

告诉sed下一个参数解释为sed指令。在命令行上给出多个sed指令时才需要使用。

-f 指定由sed指令组成的脚本的名称。如果sed脚本的第一行为#n,则sed的行为与指定-n选项相同。
-i 直接修改读取的内容,而不是输出到终端。
-n 取消默认输出。一般sed用法中,所有来自标准输入的数据一般都会被显示到终端上;但使用-n选项厚,只有经过sed处理的行才会被显示输出。

 

[Linux Shell学习系列十四]sed和awk-1.sed编辑器基础

上一篇:怎样更改Linux中默认的openjdk为自己安装的JDK


下一篇:三天100元从零开始搭建Hadoop集群