收藏 分享(赏)

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

上传人:hwp****526 文档编号:24822329 上传时间:2022-05-18 格式:DOC 页数:11 大小:42.50KB
下载 相关 举报
使用Unix命行模式高效地进行文本编辑.doc_第1页
第1页 / 共11页
使用Unix命行模式高效地进行文本编辑.doc_第2页
第2页 / 共11页
使用Unix命行模式高效地进行文本编辑.doc_第3页
第3页 / 共11页
使用Unix命行模式高效地进行文本编辑.doc_第4页
第4页 / 共11页
使用Unix命行模式高效地进行文本编辑.doc_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、使用Unix命令行模式高效地进行文本编辑大多数 UNIX 开发人员都选择 Emacs、vi 或这两个文本编辑应用程序的众多变种、分支和克隆之一。操作员通常在所选的文本编辑器中打开文件,并交互式地对文件指定和应用更改。 但是与在文本编辑器中打开文件相比,您通常可以在命令行更快地完成编辑工作。复杂的编辑过程可以从命令行进行编程和指定,并跨多个文件执行,从而消除所有不必要的屏幕显示、光标移动和与文件的人工交互。一种很好的策略是在手边保留一些相关的命令行程序,以完成常见的编辑工作。它们不仅可以为您节省时间(尤其是在涉及到多个文件的批处理操作中),而且您还可以在脚本中使用它们。 用于编辑和处理文本的单命

2、令行程序是 Perl 和 AWK(以及最近的 Ruby)语言(当然还包括 Shell)中有名的传统功能。本文使用在所有系统上都随时可用的三个最主要的命令行编辑工具来演示基本的文本编辑技术:cat、ed 和 sed。下面的编辑示例首先从最简单和最常见的构造开始,并逐步过渡到较复杂的构造。 使用 cat 进行编辑 使用 cat(其名称表示“连接”)来连接文件和标准输入流,如清单 1 所示。世界上的懒鬼们还将它用作通用分页程序 (cat file) 和完整的文本编辑环境 (cat file)。其语法的简单性无与伦比,而且对于文本编辑单命令行程序,它还为您提供了无需编辑器即可追加或插入文本的快捷方法。

3、 清单 1. 使用 cat 来连接文件和标准输入流$ (cat - input1 - input2 - input3 - input4) | mailx ted Ted, Take a look at these example files. This is the first file . Ctrl-D This is the second file . Ctrl-D This is the third file - note the fourth paragraph below . Ctrl-D And heres the last file . Ctrl-D $ 将文本添加到文件结尾 然

4、而,懒鬼也是讲策略的。当您需要将文本追加到文件结尾时,再没有比使用 cat 更快的方法了: $ cat file line line line Ctrl-D $ 当您在添加行时,按 Ctrl-U 可以删除当前行,按 Ctrl-Z 可以挂起该过程,按 Ctrl-C 可以中止所有操作。当您完成编辑时,可以在各行上按 Ctrl-D。(存在一些缺省的 Korn Shell 控制键,但它们适用于大多数 Shell 和编辑模式。) 如果您正在输入的数据是从另一个窗口粘贴而来的 X 选择,则该单命令行程序通常更快速,因为您不必调用某个编辑器、打开目标文件、移动到文件末尾、粘贴选择、保存文件然后再退出编辑器。

5、当您是在粘贴格式化或特殊格式化的文本,并且您希望保留该格式(因为某些文本编辑器和编辑模式在您粘贴 X 选择时会对其进行重新格式化)时,单命令行程序也会更有用。 虽然此操作非常常见,是一项日常活动,但是您必须小心使用 shell 操作符来追加 重定向() 而不是普通重定向操作符 ();如果您错误地使用了后者,则会使用原本打算追加的文本改写文件的原有内容。 若要将一个文件的全部内容追加到另一个文件结尾,您可以给出文件名: $ cat footnotes.txt file 如果您仅追加单行而不是多行或整个文件,您可以使用 echo 而不是 cat: $ echo 192.255.255.255 bi

6、gblue /etc/hosts若要追加从 1 开始进行项目编号的文本行,可以使用 cat 的 -n 选项;这样将在各行前面附加行号(最多偏移五个空格字符)和一个制表符。添加 -b 选项可以禁止对空白行编号: $ cat -nb file This line is numbered And so is this Another numbered line Ctrl-D $ cat file 1 This line is numbered 2 And so is this 3 Another numbered line $ 在文件开头插入文本 通过使用连字符 (-) 指定标准输入并写到一个新文件

7、,您可以使用 cat 在文件开头插入文本: $ cat - file newfile This is the beginning of the file And then the old file is inserted Below this line: Ctrl-D $ 虽然这个单命令行程序非常简单,但是它的缺点在于创建了一个新文件。如果您希望将文本插入原始文件,则必须进行的重命名将使得此单命令行程序成事不足败事有余。更好的方法是使用即将介绍的 ed。 显示非打印字符 cat 具有若干个有用的选项。其中一些选项控制它输出非打印字符的方式,例如制表符和控制字符。若要确定某个文件或某一组文本文件

8、是否有嵌入的控制字符,可以使用这些选项。例如,如果某个文件具有尾随空格,您就可以使用这些选项: $ cat -vet input.txt This line has trailing blanks. $ This line does not.$ $ 这些选项随 UNIX 实现而异;表 1 提供了标准 IBM AIX 操作系统的选项。 表 1. AIX cat 中用于输出控制的选项 选项 描述 -b 不对空白行编号。 -e 使用 $ 字符显示行尾。 -n 从 1 开始对所有输出行编号。 -q 使用静默操作(禁止错误消息)。 -r 将所有多个空行替换为单行(“压缩”空白)。 -S 将多个空白行压缩

9、到单行中(与 -r 相同)。 -s 禁止错误消息(静默操作)。 -t 将制表符显示为 I。 -u 不对输出进行缓冲。 -v 可视地显示非打印控制字符。 使用 ed 进行编辑 顾名思义,行编辑器 ed 对输入文件的行执行编辑。它将整个文件读入自己的缓冲区,对该副本执行指定的操作,并可选地将缓冲区写到磁盘。您可以在编辑操作中指定任何数量的行,并且这些操作可以在一个序列中进行组合和指定。这些事实使得 ed 成为在脚本中使用的理想选择。以如下格式指定操作:addresscommand text address 指定要处理的一行或多行(缺省为当前行),并且可以通过多种方式进行指定。单字符的 comman

10、d 是要对指定行执行的操作。对于脚本中的特别单命令行程序,可以使用 echo 将一组命令和文本管道传输给 ed,从而以非交互式的方式使用它。 ( echo OPERATION; echo OPERATION; . echo wq ) | ed -s FILENAME 如果在操作中输入文本,应该回显一个句点 (.) 来指示输入结束。最后的 wq 写入文件并退出。-s 选项使 ed 静默地操作,并禁止所有正常输出。 幸运的是,ed 的基本寻址方法和命令是相当标准化的。表 2 描述了主要的寻址形式。表 3 给出了命令。 表 2. 在 ed 中对行寻址 选项 描述 . 此选项对当前行寻址(缺省地址)。

11、 number 此选项对第 number 行寻址。可以按逗号分隔的范围 (first,last) 对行寻址。0 代表缓冲区的开头(第一行之前)。 -number 此选项对当前行之前的第 number 行寻址。如果没有 number,则减号对紧跟在当前行之前的行寻址。 +number 此选项对当前行之后的第 number 行寻址。如果没有 number,则加号对紧跟在当前行之后的行寻址。 $ 此选项对最后一行寻址。 , 此选项对第一至最后一行寻址,包括第一行和最后一行(与 1,$ 相同)。 ; 此选项对当前行至最后一行寻址。 /pattern/ 此选项对下一个包含与 pattern 匹配的文本的

12、行寻址。 ?pattern? 此选项对上一个包含与 pattern 匹配的文本的行寻址。 表 3. 主要的 ed 命令 命令 描述 a 此命令在指定的地址之后追加文本。 c 此命令将指定的地址更改为给定的文本。 d 此命令删除指定地址处的行。 i 此命令在指定的地址之前插入文本。 q 此命令在将缓冲区保存到磁盘后终止程序并退出。 r file 此命令读取 filespec 的内容并将其插入指定的地址之后。 s/pattern/replacement/ 此命令将匹配 pattern 的文本替换为指定地址中的 replacement 文本。 w file 此命令将指定的地址写到 file。如果没有

13、 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 Th

14、is 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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中学教育 > 教学研究

相关推荐:
  • 【已修改】使用Unix命行模式高效地进行文本编辑.doc

  • 【点击阅读】使用Unix命行模式高效地进行文本编辑.doc

  • 精品使用Unix命行模式高效地进行文本编辑.doc(共11页)【在线阅读】

  • 客服QQ:1356877308

    copyright@ 2008-2023 悦读文库网站版权所有

    经营许可证编号:京ICP备18064502号-6