2017-02-22 57 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

对不起,现在纠正。 –