Sed 如何使用linux正则表达式创建多个reg文件

Sed 如何使用linux正则表达式创建多个reg文件,sed,awk,grep,tr,Sed,Awk,Grep,Tr,我有一个数据文件和一个reg模板文件: 数据文件包含: c01218 172.20.13.50 c01203 172.20.13.35 c01204 172.20.13.36 c01220 172.20.13.52 c01230 172.20.13.55 注册模板: [HKEY_USERS\S-1-5-21-2000478354-2111687655-1801674531-230160\Software\SimonTatham\PuTTY\Sessions\name] "Present"=dw

我有一个数据文件和一个reg模板文件:

数据文件包含:

c01218 172.20.13.50
c01203 172.20.13.35
c01204 172.20.13.36
c01220 172.20.13.52
c01230 172.20.13.55
注册模板:

[HKEY_USERS\S-1-5-21-2000478354-2111687655-1801674531-230160\Software\SimonTatham\PuTTY\Sessions\name]
"Present"=dword:00000001
"HostName"="172.28.130.0"
我想创建一个循环,用第一列的名称从模板创建新的reg文件,用第一列更改HKEY_用户中的“名称”,用第二列更改IP地址

例如:

sed -e "s/name/name1/g" -e "s/172.28.130.0/172.28.130.1/g" 1.reg
命令后的预期视图:

#cat c01218.reg

[HKEY_USERS\S-1-5-21-2000478354-2111687655-1801674531-230160\Software\SimonTatham\PuTTY\Sessions\c01218]
"Present"=dword:00000001
"HostName"="172.20.13.50"
尝试:


sed是一个很好的工具,用于在一行上进行简单替换,对于任何其他内容,只需使用awk:

awk '{ printf "[HKEY_USERS\\S-1-5-21-2000478354-2111687655-1801674531-230160\\Software\\SimonTatham\\PuTTY\\Sessions\\name]\n\"Present\"=dword:00000001\n\"HostName\"=\"%s\"\n", $2 > $1 }' data
或者,如果您愿意:

awk -v template="\
[HKEY_USERS\\S-1-5-21-2000478354-2111687655-1801674531-230160\\Software\\SimonTatham\\PuTTY\\Sessions\\name]
\"Present\"=dword:00000001
\"HostName\"=\"%s\"
" '{ printf template, $2 > $1 }' data

感谢你对我的帮助。对我来说,正确的做法是:一边读a,一边读b;执行sed-e“s/name/$a/g”-e“s/^\”主机名。*$/\“HostName\”=\“$b\”/“template.reg>$a.reg;完成<数据
awk '{ printf "[HKEY_USERS\\S-1-5-21-2000478354-2111687655-1801674531-230160\\Software\\SimonTatham\\PuTTY\\Sessions\\name]\n\"Present\"=dword:00000001\n\"HostName\"=\"%s\"\n", $2 > $1 }' data
awk -v template="\
[HKEY_USERS\\S-1-5-21-2000478354-2111687655-1801674531-230160\\Software\\SimonTatham\\PuTTY\\Sessions\\name]
\"Present\"=dword:00000001
\"HostName\"=\"%s\"
" '{ printf template, $2 > $1 }' data