Unix脚本/从变量替换文件中的字符串并移动到另一个目录中

时间:2016-06-02 09:08:44

标签: linux unix scripting

我正在尝试编写一个脚本,该脚本在.txt文件中查找特定字符串并替换为变量。我不想更改原始文件,而是执行副本,然后移动到另一个(特定)目录。我们假设3 .txt文件:

files.txt, FILE2.TXT file3.txt

第一步是在所有.txt文件中找到字符串“string1”和“string2”并执行复制(例如tmp文件)。 第二是用变量$ 1和$ 2替换字符串(处理tmp文件)。 然后将它们全部移动到'directoryname'目录。

这就是我得到的:

#!/bin/bash 


echo "$1 - first parameter"
echo "$2 - second"



configurer() { 


for file in *.txt 

do 

    echo "Processing file .... $file" 

    orig_file=$file 

    tmp_file=$orig_file.tmp 

    cp $orig_file $tmp_file 


sed "s/string1/$1/g;s/string2/$2/g" $tmp_file 

   mv $tmp_file directorname/$orig_file 



done 

} 


configurer 



echo "Done ..."

这几乎是正确的,(正确移动到另一个目录,执行tmp文件),但sed函数不能正常工作,我不知道为什么。有人可以看看吗? 此致

1 个答案:

答案 0 :(得分:1)

尝试下面的sed,它总是带有变量

的sed问题
#!/bin/bash 
echo "$1 - first parameter" 
echo "$2 - second"    
configurer() { 
for file in *.txt 
do     
echo "Processing file .... $file"     
orig_file=$file     
tmp_file=$orig_file.tmp     
cp $orig_file $tmp_file 
sed -i -e 's/string1/'"$1"'/g'  -e 's/string2/'"$2"'/g' $tmp_file 
mv $tmp_file directorname/$orig_file 
done } 
configurer  $1 $2
echo "Done ..."

让我知道它是否有效 为你的代码

{{1}}