如何使用shell脚本替换用户名和密码
如何更新shell脚本,将用户名“u1”替换为.txt文件中用户输入的任何值如何使用shell脚本替换用户名和密码,shell,unix,sed,scripting,Shell,Unix,Sed,Scripting,如何更新shell脚本,将用户名“u1”替换为.txt文件中用户输入的任何值 'username' => "u1" 现行守则如下:- #!bin/bash echo "\nEnter Username to replace: " read name sed -i -e s/u1/"$name"/g /var/1.txt 请尝试使用“$name”而不是“$name” 最好的选择是使用sed-i-r sed -i -r 's/u1/'$name'/g' /var/1.txt 您可以
'username' => "u1"
现行守则如下:-
#!bin/bash
echo "\nEnter Username to replace: "
read name
sed -i -e s/u1/"$name"/g /var/1.txt
请尝试使用“$name”而不是“$name”
最好的选择是使用sed-i-r
sed -i -r 's/u1/'$name'/g' /var/1.txt
您可以尝试的另一个选项是将其保存到临时文件并将其移回
例如:
sed 's/u1/'$name'/g' /var/1.txt > /tmp/temp
mv /tmp/temp /var/1.txt
使用
sed
,我们可以将一条语句一分为二,并用所需的变量[here,$name]替换第二部分,而不是用u1
硬编码脚本
sed-i“s”\(.*'username'=>\)\(.*\)\\\\\\$name\\'\\'\\'/var/1.txt
使用awk
可获得如下相同结果:
awk-v name=“$name””/username/{gsub($3,\”“name”\)};1'/var/1.txt
带有-r的选项非常有效!非常感谢。在下一次迭代中,我将输入“u3”传递给“u2”(从上面代码的前一次执行中,值“u2”替换为“u1”)。这怎么办?我不完全理解你的要求。将sed放入循环中。另外,请更新我的答案,如果你得到了你想要的答案,我想替换输入中的“u1”或任何其他值示例:-“用户名”=>“u1”输入值->u2 o/p:-“用户名”=>“u2”代码重新执行:-“用户名”=>“u2”输入值->u3 o/p结果:-“用户名”=>“u3”你能把/var/1.txt的示例内容放进去吗?千万不要做's/x/'$y'/'
,因为这样会使$y
不带引号,并对shell进行解释。也不要做cmd file>tmp;mv tmp文件
,因为如果/whencmd
文件,它将摧毁原始文件。-r
没有增加任何值。编写上述内容的更安全的方法是sed-i's/u1/'“$name”/g'/var/1.txt
或sed's/u1/'“$name”/g'/var/1.txt>/tmp/temp&&mv/tmp/temp/var/1.txt
,请注意,如果$name
包含捕获组引用(例如&
或\1
)或regexp分隔符(例如/)或者其他一些角色。请参见。如果我需要在$name的末尾添加逗号,我该如何处理?示例:-$name=管理员输出:-管理员,