无法在我的shell脚本中使用perl命令搜索和替换文件
有一组文件位于不同的路径中,我想对其进行密码模式解析,并使用新的密码模式对其进行更改 例如,我有一个文件无法在我的shell脚本中使用perl命令搜索和替换文件,shell,Shell,有一组文件位于不同的路径中,我想对其进行密码模式解析,并使用新的密码模式对其进行更改 例如,我有一个文件pass.lst它包含密码列表 oldpassword1/newpassword1 oldpassword2/newpassword2 oldpassword2/newpassword2 我还有一个包含文件路径列表的文件 path.lst: $Home/test.xml $Home/demo.sh etc.... 现在,我想制作一个主文件,其中包含一个脚本,该脚本从文件中读取输入并执行我的
pass.lst
它包含密码列表
oldpassword1/newpassword1
oldpassword2/newpassword2
oldpassword2/newpassword2
我还有一个包含文件路径列表的文件
path.lst
:
$Home/test.xml
$Home/demo.sh
etc....
现在,我想制作一个主文件,其中包含一个脚本,该脚本从文件中读取输入并执行我的工作
这是我正在使用的脚本
for i in `cat pass.lst`
`do`
for j in `cat path.lst`
do
perl -p -i -e 's/$i/g' $j
done
done
但它给了我这个错误
Substitution replacement not terminated at -e line 1.
任何建议和帮助都将不胜感激。#/usr/bin/env bash
#!/usr/bin/env bash
while IFS=/ read -r orig replacement; do
orig="$orig" replacement="$replacement" \
xargs -d $'\n' \
perl -p -i -e 's/$ENV{orig}/$ENV{replacement}/g' \
<path.lst
done <pass.lst
而IFS=/read-r原始替换;做
orig=“$orig”替换=“$replacement”\
xargs-d$'\n'\
perl-p-i-e's/$ENV{orig}/$ENV{replacement}/g'\
我试图修复您的脚本和格式错误。请查收。你为什么用这么多`?请粘贴脚本并修复最常见的错误。该文件确实包含文本$Home
,或者包含这些文件的文件夹按字面意思命名为$Home
,或者是否希望以某种方式将$Home
扩展为shell变量?。该文件包含$Home,因为它引用了主路径,其余看起来不错!感谢您所做的编辑,现在看起来还可以。像i=“$i”perl-p-i-e's/$ENV{i}/g'$j”
这样的东西将更接近正确(了解perl的人将能够给您在ENV
哈希中查找字符串的实际语法)。@CharlesDuffy将尝试这样做