替换单词的通用脚本

时间:2014-08-05 05:45:08

标签: bash perl unix sed

我知道有几种像sed这样的方式,它可以替换文本文件中的单词。

我试图创建一个别名“rep word1 word1 filename”(从unix终端输入时也是如此)

其中rep将是别名,内部将使用sed实用程序替换单词。 “word1”将被“filename”中的“word2”替换。

请帮我提出这样的实用程序。

word1和word2也应该处理特殊字符。主要目的是用户可以执行此类操作,而不必担心使用sed / perl one liner。

1 个答案:

答案 0 :(得分:0)

如下所示的perl单行可以正常工作:

alias rep="perl -i -pe 'BEGIN {(\$s,\$r) = splice @ARGV, 0, 2} s/\Q\$s/\$r/g'"

使用

调用它
rep foo bar file.txt

说明:

切换

  • -i[extension]:编辑<>个文件(如果提供了扩展程序,则进行备份)
  • -p:为输入文件中的每个“行”创建一个while(<>){...; print}循环。
  • -e:告诉perl在命令行上执行代码。

<强>代码

  • BEGIN {($s,$r) = splice @ARGV, 0, 2}:将前两个参数拉入变量以进行搜索和替换。
  • s/\Q$s/$r/g:将$s的所有引用替换为$r