我是shell脚本新手。我有一个名为 myfolder 的文件夹,其中包含一些xml文件。我还有一个属性文件,如下所述:
user=admin
password=admin
# location of xml test file
inputPath=/home/filename.xml
#reporter=XMLReporter
outputPath=/home/filename.csv
numThreads=5
reportTime=true
reportResults=true
我想替换 inputPath & outputPath 值包含我从文件夹 myfolder 中获取的文件名列表(近10个文件名)。在我的代码中,我尝试首先单独替换inputPath,如下所示:
for i in `ls myfolder/*.xml`; do
sed -i 's/inputPath=*/inputPath=/home/$i/g' propertiesfile
done
但是我收到错误,例如:找不到命令 sed:-e表达式#1,char 29:'s'的未知选项
即使遇到同样的错误,我已将/
替换为|
。如何使用for循环直到所有要替换的文件名?任何人都可以帮忙吗?
感谢。
答案 0 :(得分:0)
/
以外的其他正则表达式分隔符,因为您的匹配模式也有/
ls
命令的输出并依赖shell globing。尝试使用此sed命令:
for i in myfolder/*.xml; do
sed -i.bak "s#^\(inputPath=\).*$#$1/home/$i#" propertiesfile
done