Bash 替换单词的通用脚本
我知道有几种类似的方法,比如sed、perl,它们可以替换文本文件中的单词 当从unix终端键入时,我试图创建一个别名,比如说rep word1 word1 filename,但执行相同的操作 其中rep将是alias,内部将使用sed实用程序替换单词。文件名中的word1将替换为word2 请帮我想出这样的实用程序Bash 替换单词的通用脚本,bash,perl,unix,sed,Bash,Perl,Unix,Sed,我知道有几种类似的方法,比如sed、perl,它们可以替换文本文件中的单词 当从unix终端键入时,我试图创建一个别名,比如说rep word1 word1 filename,但执行相同的操作 其中rep将是alias,内部将使用sed实用程序替换单词。文件名中的word1将替换为word2 请帮我想出这样的实用程序 此外,word1和word2应注意特殊字符。主要目的是用户可以执行此类操作,而不必担心sed/perl一行程序的使用。像下面这样的perl一行程序可以很好地工作: alias re
此外,word1和word2应注意特殊字符。主要目的是用户可以执行此类操作,而不必担心sed/perl一行程序的使用。像下面这样的perl一行程序可以很好地工作:
alias rep="perl -i -pe 'BEGIN {(\$s,\$r) = splice @ARGV, 0, 2} s/\Q\$s/\$r/g'"
并使用
rep foo bar file.txt
说明:
开关:
-i[扩展名]:就地编辑文件,如果提供扩展名,则进行备份
-p:为输入文件中的每一行创建一个while{…;print}循环。
-e:告诉perl在命令行上执行代码。
代码:
BEGIN{$s,$r=splice@ARGV,0,2}:将前两个参数拉入变量中进行搜索和替换。
s/\Q$s/$r/g:将$s的所有引用替换为$r
不能使用别名执行此操作,因为别名不能替换参数。您需要使用脚本或shell函数。请显示您迄今为止尝试的内容。因此,这不是一个免费的代码编写服务,我们将帮助您修复代码。sed的/word1/word2/g文件名是否有效?感谢Barmar的鼓励:我现在就可以这样做了。我将$1和$2 shell变量传递到sed s/$1/$2/g中。这个工具我化名为代表,现在正在工作。非常感谢