我正在尝试编写一个脚本,该脚本在.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函数不能正常工作,我不知道为什么。有人可以看看吗? 此致
答案 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}}