我有两个名为myfile.txt &的文件,如下所示。
myfile.txt
user=myname
Was_WAS_AdminId=CN=wsadmin,OU=service,OU=WAS_Secure,OU=tb,ou=dcdc,ou=sysadm,dc=info,dc=prd,dc=dcdcresponsefile.txt
'#'Please fill the user id details.
'#'Here is example user=urname.
user=
'#'Please fill the details.
'#'Here is example Was_WAS_AdminId=CN=wsadmin-xxxx.
Was_WAS_AdminId=现在,使用上述两个文件希望在替换匹配模式后获得以下最终结果。responsefile.txt内容应该是完整的,只是匹配的模式应该以myfile.txt中提供的细节作为前缀,或者只替换整个匹配行,因为第一个模式在两个文件中都是相同的,并且将超过100个模式。所以,请提出一个简单的解决方案。
responsefile.txt (用模式替换/替换的新文件)
'#'Please fill the user id details.
'#'Here is example user=urname.
user=myname
'#'Please fill the details.
'#'Here is example Was_WAS_AdminId=CN=wsadmin-xxxx.
Was_WAS_AdminId=CN=wsadmin,OU=service,OU=WAS_Secure,OU=tb,ou=dcdc,ou=sysadm,dc=info,dc=prd,dc=dcdc两个文件中的模式都是相同的,例如两个文件中的"user=“或"Was_WAS_AdminId=”。
发布于 2013-08-25 16:16:21
这是一只鹰-一的衬垫:
$ awk -F= 'NR==FNR{a[$1]=$0;next}$1 in a{$0=a[$1]}1' myfile.txt responsefile.txt
'#'Please fill the user id details.
'#'Here is example user=urname.
user=myname
'#'Please fill the details.
'#'Here is example Was_WAS_AdminId=CN=wsadmin-xxxx.
Was_WAS_AdminId=CN=wsadmin,OU=service,OU=WAS_Secure,OU=tb,ou=dcdc,ou=sysadm,dc=info,dc=prd,dc=dcdc命令中两个文件的顺序很重要
发布于 2013-08-25 16:24:08
这个awk应该能工作:
awk -F'=' 'FNR==NR{i=index($0, "="); a[substr($0, 1, i-1)]=substr($0, i+1);next} ($1 in a) {$0=$0 a[$1]}1' myfile.txt responsefile.txt
'#'Please fill the user id details.
'#'Here is example user=urname.
user=myname
'#'Please fill the details.
'#'Here is example Was_WAS_AdminId=CN=wsadmin-xxxx.
Was_WAS_AdminId=CN=wsadmin,OU=service,OU=WAS_Secure,OU=tb,ou=dcdc,ou=sysadm,dc=info,dc=prd,dc=dcdchttps://stackoverflow.com/questions/18430797
复制相似问题