2017-02-22 55 views
0

替換字段我在一個文件中的以下內容,分爲字段:與值從其他線

$ cat list 
ldap 12309423409875 
account01 98734598073 
notes 4736594384325 

我想通過採取從對應於第一用戶輸入來改變所述第二字段的值字段,使用awk。例如,我要求用戶輸入字段;如果他輸入ldap,那麼我應該能夠給第一行的第二個字段賦予不同的值。

我嘗試了下面的腳本,但它沒有工作:

generatepasswd() 
{ 
    date | md5sum 
    return 
} 

cat list 
echo "for what do you want to change the password" 
pass=`generatepasswd` 
read op 

awk '$1=="$op"{$2=$pass}1' list > tmp && mv tmp list 

我得到的輸出,如果我使用的字符串,而不是直接$op;例如,如果我使用ldap,我會得到結果,但如果我使用$op,則不會得到輸出結果。 op由字符串ldap組成。

+0

如果以下任何答案對您的目標有所幫助,請通過在答案旁邊勾選正確的符號來接受/提出封閉答案。 –

回答

0
echo "for what do you want to change the password" 
read op 
pass=$(date|md5sum) 


    awk -v input="$op" -v pass="$pass" '{if($1==input) $2=pass;}1' list 

這將使用bash變量oppassawk

+0

[root @ oc8210542486 shell]#./ps 您要更改密碼 ldap ./ps:第6行:語法錯誤附近有意外的標記'(' ./ps:第6行:'awk - v input =「$ op」-v'pass =「$ pass」'{if($ 1 == input){$ 2 = pass;}} 1'list' –

+0

對不起,現在糾正。 –