在学习shell脚本sed命令时觉得很难理解,然后就看了一下ed的使用说明,这个编辑器真特么不好用, 难用归难用,了解下其基本用法其实还是很简单的。


转自:http://blog.chinaunix.net/uid-9525959-id-2001556.html


ed 编辑器是 Linux 操作系统下最简单的文本编辑器。它是以行为单位对文件进行编辑不像 MS-DOS 系统下的 edit 那样是以整个屏幕框架为单位对文件进行编辑的。

ed编辑器有两个状态:命令行状态和编辑状态。前者接收输入的ed命令也是默认启动状态,后者对文件以行为单位进行编辑,下面开始学习。


**新建一个文件testNew:

*方法1,先指定文件名,输入过程如下:

$ls

$ed testNew

testNew: No such file or directory <==此处是输出,表示一个不存在的文件。

w

0 <==此处是输出,表示写了0个字符。

q

$ ls

testNew <==此处是输出,可见多了一个新的空文件。

这里,w表示写命令,q退出,后面会提到。如果没有w那么q之后也不会建立新的文件。


*方法2,写时再指定名字,输入过程如下:

$ls

testNew <==此处是输出,只有刚才新建的文件。

$ed

w

? <==此处是输出,?表示有问题,或命令不识别或别的,此处是缺少文件名。

w

? <==此处是输出,同上。

w testNew2

0 <==此处是输出,表示写了0个字符。

q

$ls

testNew  testNew2 <==此处是输出,可见多了一个新的空文件testNew2。

这里,因为是一个新文件,所以如果一直w且没输入文件名的话,会一直提示,直至你指定了一个文件名。如果在w testNew2之前按q将直接退出,这样也不会建立这个新文件了。

**


**编辑已存在的文件:

*编辑文件testNew

$ed testNew

0 <==此处是输出,表示读了0个字符。

这里,默认进入的是命令状态,你可以输入任何命令进行编辑文件。按q退出。


*命令行状态常用命令:

a <==在文件的末尾添加新内容。

i <==在文件的最后一行之前插入新内容。

o <==把文件输入的最后一行(不论是原来存在的或者插入的)替换成新内容。

. <==退出编辑文件模式进入命令行模式(注意:此时并没有退出 ed 编辑器)。

w <==保存文件,如果指定一个名称表示另存为的意思,这就不改变当前文件了。

q <==退出 ed 编辑器,如果没有w则提示?,再次q就非保存退出了。

Q <==相当强制退出,无论保存与否。

**


*新建一个文件并编辑的流程举例:

$ ed

a <==输入a告诉 ed 我要编辑新文件

My name is QuietHeart. <==输入第1行内容

And I love ed very much. <==输入第2行内容

. <==输入.返回 ed 的命令行状态

i <==输入i告诉 ed 我要在最后一行之前插入内容

I am 25. <==输入,将“I am 25.”插入“My name is ...”和“And I love...”间.

. <==输入.返回 ed 的命令行状态

c <==输入c告诉 ed 我要替换最后一行输入内容

I am 25 years old. <==输入,将“I am 25.”替换成“I am 25 years old.”

.w <==输入,一个误操作,结果成了输入了。

q <==输入,由于前面一个误操作,结果成了输入了。

. <==输入.,这才返回 ed 的命令行状态,而不是前面.w

w testNew <==输入,将文件命名为“testNew”保存(如果已存在文件,只需要敲入 w否则会覆盖)

72 <==这里是输出,表示写入的字符数。

q <==输入q完全退出 ed 编辑器


下面,我们来看看刚刚新建的文件的内容:

$ cat testNew

输入之后,输出如下:

My name is QuitHeart.

I am 25 years old.

.w

q

And I love ed very much.

这里,我几乎都用到了前面给出的常用命令,我们可以了解ed最最简单的使用了,后面再说一些其它实用的命令。


常用的命令

*打印所有行:

%p

*打印所有行并且显示行号:

%n

*打印当前行:

.p

*打印当前行并且显示行号:

.n

*跳到第3行:

3

*显示并切换到下一行:

+

下两行则++

*显示并切换到上一行:

-

上两行则--


*退出:

q

这里如果没有保存则第一次退不出去,再q就退出但没有保存。


*强制退出:

Q

不会保存。


Logo

更多推荐