首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
Google
首页 入门 Linux编程 系统管理 网络管理 Linux认证 Unix/BSD Linux数据库 Linux集群 Linux手册 Linux下载 Ubuntu 论坛 专题 RSS
您现在的位置: 中国IT实验室 >> Linux >> 其他Unix >> 正文

使用Unix命令行模式高效地进行文本编辑

使用 ed 进行编辑

顾名思义,行编辑器 ed 对输入文件的行执行编辑。它将整个文件读入自己的缓冲区,对该副本执行指定的操作,并可选地将缓冲区写到磁盘。您可以在编辑操作中指定任何数量的行,并且这些操作可以在一个序列中进行组合和指定。这些事实使得 ed 成为在脚本中使用的理想选择。以如下格式指定操作:

[address]command [text]

address 指定要处理的一行或多行(缺省为当前行),并且可以通过多种方式进行指定。单字符的 command 是要对指定行执行的操作。对于脚本中的特别单命令行程序,可以使用 echo 将一组命令和文本管道传输给 ed,从而以非交互式的方式使用它。

( echo 'OPERATION'; echo 'OPERATION';

... echo 'wq' ) | ed -s FILENAME

如果在操作中输入文本,应该回显一个句点 (.) 来指示输入结束。最后的 wq 写入文件并退出。-s 选项使 ed 静默地操作,并禁止所有正常输出。

幸运的是,ed 的基本寻址方法和命令是相当标准化的。表 2 描述了主要的寻址形式。表 3 给出了命令。

表 2. 在 ed 中对行寻址

选项 描述

. 此选项对当前行寻址(缺省地址)。

number 此选项对第 number 行寻址。可以按逗号分隔的范围 (first,last) 对行寻址。0 代表缓冲区的开头(第一行之前)。

-number 此选项对当前行之前的第 number 行寻址。如果没有 number,则减号对紧跟在当前行之前的行寻址。

+number 此选项对当前行之后的第 number 行寻址。如果没有 number,则加号对紧跟在当前行之后的行寻址。

$ 此选项对最后一行寻址。

, 此选项对第一至最后一行寻址,包括第一行和最后一行(与 1,$ 相同)。

; 此选项对当前行至最后一行寻址。

/pattern/ 此选项对下一个包含与 pattern 匹配的文本的行寻址。

?pattern? 此选项对上一个包含与 pattern 匹配的文本的行寻址。

表 3. 主要的 ed 命令

命令 描述

a 此命令在指定的地址之后追加文本。

c 此命令将指定的地址更改为给定的文本。

d 此命令删除指定地址处的行。

i 此命令在指定的地址之前插入文本。

q 此命令在将缓冲区保存到磁盘后终止程序并退出。

r file 此命令读取 filespec 的内容并将其插入指定的地址之后。

s/pattern/replacement/ 此命令将匹配 pattern 的文本替换为指定地址中的 replacement 文本。

w file 此命令将指定的地址写到 file。如果没有 address,则此命令缺省使用整个缓冲区。

在文件开头插入文本,第二部分

通过可在脚本中使用的 ed 单命令行程序,您可以容易地在文件开头插入文本。插入操作是使用 ed 并通过 a 命令将给定文本追加到第 0 行(文件开头)来完成的:

$ cat file

This is the end.

$ (echo '0a'; echo 'This is the beginning.'; echo '.'; echo 'wq') | ed -s file

$ cat file

This is the beginning.

This is the end.

$

您可以交互式地完成同样的任务:

$ cat file

This is the end.

$ ed -s file

> 0a

> This is the beginning.

> .

> wq

$ cat file

This is the beginning.

This is the end.

$

若要在文件开头插入另一个文件的内容,可以使用 r 命令:

$ (echo '0r headnotes'; echo 'wq') | ed file

在给定字符串之后插入文本

您可以使用 ed 将任何数量的文本行插入文件中任意行之前或之后。若要在第一个包含给定字符串的行之后插入,可以将该字符串包括在斜杠中,并在后面跟着 a 命令以追加随后的文本。与前面一样,各个行使用一个句点结束,并使用 wq 写入文件并退出。

当您希望在文件中的特定位置追加文本块时,此项技术就会派上用场:

$ ( echo '/begin/a'; echo 'This is the middle.'; \

> echo '.'; echo 'wq') | ed -s file

$ cat file

This is the beginning.

This is the middle.

This is the end.

$

上一页  [1] [2] [3] [4] [5] 下一页

【责编:Zenghui】
中国IT教育
相关产品和培训
文章评论
 友情推荐链接
 专题推荐

 ·防范Linux病毒 打造没有病毒的乐土…
 ·Linux Shell编程实用指南…
 ·Linux日志分析与管理
 ·揭密Linux内存管理
 ·邮件服务Sendmail应用配置
 ·Linux 安全管理…
 ·Linux 下DNS服务器架设攻略…
 ·Linux 下的路由的配置与应用…
 ·专题:Apache实用手册
 ·全面剖析Linux文件系统
 今日更新
 认证培训
 频道精选
 Windows频道导航