我知道有几种像sed这样的方式,它可以替换文本文件中的单词。
我试图创建一个别名“rep word1 word1 filename”(从unix终端输入时也是如此)
其中rep将是别名,内部将使用sed实用程序替换单词。 “word1”将被“filename”中的“word2”替换。
请帮我提出这样的实用程序。
word1和word2也应该处理特殊字符。主要目的是用户可以执行此类操作,而不必担心使用sed / perl one liner。
答案 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