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

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

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

  sed 接受包含任何数量命令的脚本,后面跟着可选的指定输入文件的选项;缺省情况下,它读取标准输入。某些版本的 sed 有一个 -i 选项,此选项指定应该编辑的输入文件。(如果没有此选项,则读取输入文件,而不对其执行写入。)如果您安装的版本支持此选项,则应该使用它——它允许您使用单个命令对任何指定的文件执行快速编辑操作。

  sed -i script filespec

  以下示例假设您的 sed 支持 -i 选项。否则,您必须使用 Shell 重定向将输出保存到新文件,并在另一个步骤将新文件重命名为旧文件,从而执行临时文件中转:

  sed script file > newfile; mv newfile file

  对于多个文件,您必须执行循环:

  for i in *; { sed script $i > $i.new; mv $i.new $i; }

  替换文件中的文本

  您可以使用 s/searchstring/replacestring/ 构造将给定字符串替换为另一个字符串。若要替换某个文件中每行上的第一个 old 实例,可以使用以下命令:

  $ sed -i 's/old/new/' file

  若要替换每个实例,可以对该搜索追加 g 选项。此项技术对于修复输入错误或替换一个或一组文件中的重复单词、短语或其他内容非常理想。

  $ sed -i 's/Esclipse/Eclipse/g' *.xml

  您可以在输入表达式中将字符包括在方括号中,但是,如果您在替换文本中使用方括号,则会将它们视为普通字符:

  $ cat file

  This is the beginning.

  This is the middle.

  This is the end.

  $ sed 's/[Tt]h/[Tt]h/g' file

  [Tt]his is [Tt]he beginning.

  [Tt]his is [Tt]he middle.

  [Tt]his is [Tt]he end.

  当要搜索或替换的短语包括斜杠字符时,应使用它来定义新的分隔符:

责编:豆豆技术应用

正在加载评论...