2016-08-01 90 views
-1

如何更新shell腳本,我可以更換用戶名「U1」至從用戶輸入的任何值.txt文件我如何使用shell腳本

'username' => "u1" 

下面是更換用戶名和密碼現有代碼: -

#!bin/bash 
echo "\nEnter Username to replace: " 
read name 

sed -i -e s/u1/"$name"/g /var/1.txt 

回答

0

使用sed,我們可以拆分聲明爲兩個 - 和更換第二部分與所需變量[此處爲$ name] - 而不是使用u1對腳本進行硬編碼。

sed -i "s#\(.*'username' =>\)\(.*\)#\1 "\"$name\""#" /var/1.txt

結果相同,如下使用awk來實現:

awk -v name="$name" '/username/{gsub($3,"\""name"\"")};1' /var/1.txt

+0

如果我需要在$ name的末尾添加逗號,我該如何處理? 示例: - $ name = admin 輸出: - admin, –

0

嘗試 '$名稱',而不是 「$名」

最好的辦法是用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 
+0

與-r選項工作太棒了!非常感謝。 在下一次迭代中,我將輸入「u3」替換爲「u2」(以前執行上述代碼,值「u2」替換爲「u1」)。這怎麼處理? –

+0

我完全不瞭解您的要求。把sed放在循環中。也請給予好評我的答案,如果你得到了你找 –

+0

的答案,我要替換「U1」或輸入 的任何其它值: - 「用戶名」 =>「U1」 輸入值 - > U2 O/p: - '用戶名'=> 「U2」 代碼重新執行: - '用戶名'=> 「U2」 輸入值 - > U3 O/p的結果: - 「用戶名'=>「u3」 –