我有一个users.txt文件,其中包含以下内容:
[builders.ca]
UniqueID=DB@LqlFP
Login=buildca
Pass=5nFvZLwx
RelativePath=1
[DeluxeDoors.ca]
UniqueID=RgOkvU4Z
Login=DeluxDSM
Pass=L9pP3iaK
RelativePath=1
[Sonicwall.com]
UniqueID=JVpFoXad
Login=firewall
Pass=azasadsa
RelativePath=1
我写了一个脚本,用文件中的随机密码替换所有密码。
脚本是:
users=($(cat users.txt | grep 'Login=' | cut -c 7-))
for user in "${users[@]}"; do
pass=$(cat users.txt | grep -A 2 $user | grep 'Pass' | cut -c 6-)
new_pass=$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 8)
echo $pass;
echo $new_pass;
#perl -pi -e 's/$pass/$new_pass/g' users.txt
sed -i '' 's/"${pass}"/"${new_pass}"/g' users.txt
done
但它没有更新users.txt中的密码。 任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
sed -i '' 's/'"${pass}/${new_pass}"'/g' users.txt
^ ^
似乎缺少这些内容,因此sed
将${pass}
和${new_pass}
作为文字字符串,而非扩展变量。