如何更新我可以替换用户名的shell脚本" u1"来自.txt文件中用户输入的任何值
'username' => "u1"
以下是现有代码: -
#!bin/bash
echo "\nEnter Username to replace: "
read name
sed -i -e s/u1/"$name"/g /var/1.txt
答案 0 :(得分:0)
尝试'$ 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
答案 1 :(得分:0)
使用sed
,我们可以将一个语句拆分为两个 - 并将第二部分替换为必需的变量[here,$ name] - 而不是使用u1
对脚本进行硬编码。
sed -i "s#\(.*'username' =>\)\( .*\)#\1 "\"$name\""#" /var/1.txt
使用awk
可以实现相同的结果,如下所示:
awk -v name="$name" '/username/{gsub($3,"\""name"\"")};1' /var/1.txt