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

http://tech.ddvip.com   2007年08月29日    社区交流

内容摘要:大多数 UNIX® 开发人员都选择 Emacs、vi 或这两个文本编辑应用程序的众多变种、分支和克隆之一。操作员通常在所选的文本编辑器中打开文件,并交互式地对文件指定和应用更改。

  $ 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.

  $

  当您对一组文件执行多行文本插入时,此项技术也非常有用。如果要插入大量的行,可以使用 here document,这是使用 << 和一个限制字符串以内联方式指定的文档,用于重定向其后直至到达限制字符串的所有输入(请参见参考资料):

  $ for i in *.xml

  > { ed -s $i << EOF

  > //a

  >

  > johnnycomelately

  > 10

  > 4

  >

  > .

责编:豆豆技术应用

正在加载评论...