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

上传人:ji****72 文档编号:45725156 上传时间:2018-06-18 格式:PDF 页数:10 大小:150.59KB
返回 下载 相关 举报
使用命令行高效地进行文本编辑_第1页
第1页 / 共10页
使用命令行高效地进行文本编辑_第2页
第2页 / 共10页
使用命令行高效地进行文本编辑_第3页
第3页 / 共10页
使用命令行高效地进行文本编辑_第4页
第4页 / 共10页
使用命令行高效地进行文本编辑_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《使用命令行高效地进行文本编辑》由会员分享,可在线阅读,更多相关《使用命令行高效地进行文本编辑(10页珍藏版)》请在金锄头文库上搜索。

1、使用命令行高效地进行文本编辑使用命令行高效地进行文本编辑摘自: IBM developerWorks China简单研究一下可节省时间和精力的一些基本命令行文本编辑程序。 文本编辑操作通常在 文本编辑器应用程序中交互式地进行。然而,有些任务可以直接从 UNIX 命令行方便快捷 地完成。此外,还可以在脚本中使用这些单命令行程序来自动化各种编辑过程。引言引言大多数 UNIX 开发人员都选择 Emacs、vi 或这两个文本编辑应用程序的众多变种、分支和克隆之一。 操作员通常在所选的文本编辑器中打开文件, 并交互式地对文件指定和应用 更改。 但是与在文本编辑器中打开文件相比, 您通常可以在命令行更快地

2、完成编辑工作。 复杂的编辑过程可以从命令行进行编程和指定, 并跨多个文件执行, 从而消除所有不必要的屏幕 显示、 光标移动和与文件的人工交互。 一种很好的策略是在手边保留一些相关的命令行程序, 以完成常见的编辑工作。 它们不仅可以为您节省时间 (尤其是在涉及到多个文件的批处理操作中) ,而且您还可以在脚本中使用它们。 用于编辑和处理文本的单命令行程序是 Perl 和 AWK(以及最近的 Ruby)语言(当然 还包括 Shell)中有名的传统功能。本文使用在所有系统上都随时可用的三个最主要的命令行编辑工具来演示基本的文本编辑技术:cat、ed 和 sed。下面的编辑示例首先从最简单和 最常见的构

3、造开始,并逐步过渡到较复杂的构造。使用使用 catcat 进行编辑进行编辑使用 cat(其名称表示“连接”)来连接文件和标准输入流,如清单 1 所示。世界上的懒鬼们还将它用作通用分页程序 (cat file) 和完整的文本编辑环境 (cat file)。其语法的简单 性无与伦比, 而且对于文本编辑单命令行程序, 它还为您提供了无需编辑器即可追加或插入 文本的快捷方法。清单 1. 使用 cat 来连接文件和标准输入流 $ (cat-input1-input2-input3-input4)|mailx tedTed, Takealook at these example files. This i

4、s the first file .Ctrl-D This is the second file . Ctrl-DThis is the third file-note the fourth paragraph below . Ctrl-D And heres the last file .Ctrl-D $将文本添加到文件结尾将文本添加到文件结尾然而,懒鬼也是讲策略的。当您需要将文本追加到文件结尾时,再没有比使用 cat 更 快的方法了:$ cat file line line line Ctrl-D $当您在添加行时, 按 Ctrl-U 可以删除当前行, 按 Ctrl-Z 可以挂起该过程,

5、按 Ctrl-C 可 以中止所有操作。 当您完成编辑时, 可以在各行上按 Ctrl-D。(存在一些缺省的 Korn Shell 控 制键,但它们适用于大多数 Shell 和编辑模式。 )如果您正在输入的数据是从另一个窗口粘贴而来的 X 选择,则该单命令行程序通常更 快速,因为您不必调用某个编辑器、打开目标文件、移动到文件末尾、粘贴选择、保存文件 然后再退出编辑器。当您是在粘贴格式化或特殊格式化的文本,并且您希望保留该格式(因为某些文本编辑器和编辑模式在您粘贴 X 选择时会对其进行重新格式化)时,单命令行程 序也会更有用。 虽然此操作非常常见,是一项日常活动,但是您必须小心使用 shell 操作

6、符来追加 重定向() 而不是普通重定向操作符 (); 如果您错误地使用了后者, 则会使用原本打算追加 的文本改写文件的原有内容。 若要将一个文件的全部内容追加到另一个文件结尾,您可以给出文件名:$ cat footnotes.txt file如果您仅追加单行而不是多行或整个文件,您可以使用 echo 而不是 cat:$ echo “192.255.255.255bigblue“ /etc/hosts若要追加从 1 开始进行项目编号的文本行,可以使用 cat 的 -n 选项;这样将在各行 前面附加行号(最多偏移五个空格字符)和一个制表符。添加 -b 选项可以禁止对空白行编号: $ cat -nb

7、 file This line is numberedAnd so is this Another numbered line Ctrl-D$ cat file 1This line is numbered 2And so is this3Another numbered line $在文件开头插入文本在文件开头插入文本通过使用连字符 (-) 指定标准输入并写到一个新文件,您可以使用 cat 在文件开头插 入文本:$ cat-file newfile This is the beginning of the file And then the old file is insertedBelow

8、 this line: Ctrl-D $虽然这个单命令行程序非常简单, 但是它的缺点在于创建了一个新文件。 如果您希望将 文本插入原始文件, 则必须进行的重命名将使得此单命令行程序成事不足败事有余。 更好的方法是使用即将介绍的 ed。显示非打印字符显示非打印字符cat 具有若干个有用的选项。其中一些选项控制它输出非打印字符的方式,例如制表符和控制字符。 若要确定某个文件或某一组文本文件是否有嵌入的控制字符, 可以使用这些选 项。例如,如果某个文件具有尾随空格,您就可以使用这些选项:$ cat -vet input.txt This line has trailing blanks.$ This

9、 line does not.$这些选项随 UNIX 实现而异;表 1 提供了标准 IBM AIX? 操作系统的选项。表 1.AIX cat 中用于输出控制的选项选项描述-b不对空白行编号。-e使用 $ 字符显示行尾。-n从 1 开始对所有输出行编号。-q使用静默操作(禁止错误消息) 。-r将所有多个空行替换为单行(“压缩”空白) 。-S将多个空白行压缩到单行中(与 -r 相同) 。-s禁止错误消息(静默操作) 。-t将制表符显示为 I。-u不对输出进行缓冲。-v可视地显示非打印控制字符。使用使用 eded 进行编辑进行编辑顾名思义,行编辑器 ed 对输入文件的行执行编辑。它将整个文件读入自己

10、的缓冲区, 对该副本执行指定的操作, 并可选地将缓冲区写到磁盘。 您可以在编辑操作中指定任何数量 的行,并且这些操作可以在一个序列中进行组合和指定。这些事实使得 ed 成为在脚本中使用的理想选择。以如下格式指定操作:addresscommand textaddress 指定要处理的一行或多行(缺省为当前行) ,并且可以通过多种方式进行指定。 单字符的 command 是要对指定行执行的操作。 对于脚本中的特别单命令行程序, 可以使用echo 将一组命令和文本管道传输给 ed,从而以非交互式的方式使用它。( echo OPERATION; echo OPERATION;. echo wq )|e

11、d -s FILENAME如果在操作中输入文本,应该回显一个句点 (.) 来指示输入结束。最后的 wq 写入文件并退出。-s 选项使 ed 静默地操作,并禁止所有正常输出。幸运的是,ed 的基本寻址方法和命令是相当标准化的。表 2 描述了主要的寻址形式。表 3 给出了命令。表 2. 在 ed 中对行寻址选项 描述 . 此选项对当前行寻址(缺省地址) 。 number 此选项对第 number 行寻址。 可以按逗号分隔的范围 (first,last) 对行寻址。 0 代表缓冲区的开头(第一行之前) 。 -number 此选项对当前行之前的第 number 行寻址。如果没有 number,则减号对

12、紧跟 在当前行之前的行寻址。+number 此选项对当前行之后的第 number 行寻址。如果没有 number,则加号对紧跟 在当前行之后的行寻址。 $ 此选项对最后一行寻址。, 此选项对第一至最后一行寻址,包括第一行和最后一行(与 1,$ 相同) 。 ; 此选项对当前行至最后一行寻址。 /pattern/ 此选项对下一个包含与 pattern 匹配的文本的行寻址。?pattern? 此选项对上一个包含与 pattern 匹配的文本的行寻址。表 3. 主要的 ed 命令命令 描述a此命令在指定的地址之后追加文本。c此命令将指定的地址更改为给定的文本。d 此命令删除指定地址处的行。 i 此命令

13、在指定的地址之前插入文本。 q 此命令在将缓冲区保存到磁盘后终止程序并退出。rfile 此命令读取 filespec 的内容并将其插入指定的地址之后。s/pattern/replacement/ 此命令将匹配 pattern 的文本替换为指定地址中的 replacement 文本。w file 此命令将指定的地址写到 file。如果没有 address,则此命令缺省使用整个缓冲 区。在文件开头插入文本,第二部分在文件开头插入文本,第二部分通过可在脚本中使用的 ed 单命令行程序, 您可以容易地在文件开头插入文本。 插入操 作是使用 ed 并通过a命令将给定文本追加到第 0 行(文件开头)来完成

14、的:$ 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 fileThis is the end. $ ed -s file 0a This is the beginning. . wq$ cat fileThis is the beginning.This is the end. $若要在文件开头插入另一个文件的内

15、容,可以使用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

16、 fileThis is the beginning. This is the middle. This is the end.$当您对一组文件执行多行文本插入时,此项技术也非常有用。如果要插入大量的行, 可以使用 here document,这是使用 ed -s $i /a johnnycomelately 10 4 . wq EOF $您可以在给定字符串之后插入一个文件:您可以在给定字符串之后插入一个文件:$ (echo /END OFPARTI/r footnotes.txt; echo wq)|ed file删除行删除行使用 d 命令来删除文件中的行。与本文讨论的所有命令一样,您可以指定任何类型的 有效地址,例如特定的行或行范围。在实践中,此单命令行程序最适合于与至少一个匹配的 模式结合使用,例如删除从第一个匹配某模式的行到文件结尾的所有行:$ ( echo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号