在Mac上sed没有按预期更新文件

时间:2018-01-25 15:08:19

标签: linux bash sed

我有一个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中的密码。 任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

sed -i '' 's/'"${pass}/${new_pass}"'/g'  users.txt
             ^                     ^

似乎缺少这些内容,因此sed${pass}${new_pass}作为文字字符串,而非扩展变量。