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

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

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

  d 命令删除给定的行。您可以在它前面附加行号、范围、要匹配或包括在斜杠中的模式。

  若要删除文件中的第一行,可以使用以下命令:

  $ sed -i 1d file

  若要删除第 1 至第 10 行,可以使用以下命令:

  $ sed -i 1,10d file

  若要删除“BEGIN QUOTE”字符串的第一个实例到“END QUOTE”字符串的第一个实例之间的所有行,可以使用以下命令:

  $ sed -i '/BEGIN QUOTE/,/END QUOTE/d' file

  若要删除当前目录中扩展名为 .xml 的所有文件中第一行包含“”并且最后一行包含“""”的所有文本部分,可以使用以下命令:

  $ sed -i '//,/</record>/d' *.xml

  若要删除从第一行直到第一个空白行的所有内容,可以使用以下命令:

  $ sed -i '/^> /d' file

  (当在电子邮件消息或 Usenet 文章中使用时,前述单命令行程序将除去所有标头。)

  若要删除所有以电子邮件样式引用开头的行,可以使用以下命令:

  $ sed -i /^$/d file

  若要删除文件的最后一行,可以使用以下命令:

  $ sed -i '$d' file

  删除尾随空格

  如果文件中的行包含需要清除的尾随空格字符,在文本编辑器中人工查找并删除它们会非常麻烦,但是使用 sed 完成此任务将成为一个快速的单行操作。您可以搜索行尾之前出现一次或多次的字面空格字符,并将其替换为空字符:

  $ cat -vet input.txt

  This line has trailing blanks. $

  This line does not.$

  $ sed -i 's/ *$//' input.txt

  $ cat -vet input.txt

  This line has trailing blanks.$

  This line does not.$

  $

  总结

  通过从 UNIX 命令行运行单命令行程序,可以利用多种有意义和复合的方式(无需编辑器)对文本文件进行编辑。您这样做有许多很好的理由:为了提高速度和方便性,在无法或不适合使用交互式编辑的情况下可编写脚本,有时为了对单个文件或一组文件执行复杂编辑,这些编辑操作难于甚至无法在交互式应用程序中完成。本文使用三个普遍存在的编辑工具,通过许多简单文本编辑单命令行程序阐述了这一概念:cat、ed 和 sed。

责编:豆豆技术应用

正在加载评论...