如何将文件中的字符串添加到匹配文件中

时间:2019-05-06 15:38:26

标签: xml bash loops for-loop

我正在尝试浏览工作站列表,并将数据添加到其相应的单个文件中。我已经制作了单个文件,但是现在我需要使用sed或其他方法来替换单个XML文件中的文本的帮助:

例如:

workstation_list.txt具有以下几行:

workstation1
workstation1.domain.com
127.0.0.1
00:00:00:00:00:00

workstation2
workstation2.domain.com
127.0.0.2
11:11:11:11:11:11

我有两个文件:带有以下XML的工作站1和工作站2:

< HOST_NAME >workstation3< /HOST_NAME >
< HOST_FQDN >workstation3.domain.com< /HOST_FQDN >
< IP >127.0.0.0< /IP >
< MAC >33:33:33:33:33:33< /MAC >

我可以做“ while read line do”,而不会出现问题,但是我从未使用过多个变量。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

只需调用即可完成整个任务:

awk -v RS='\n\n' '{               
  print "< HOST_NAME >" $1 "< /HOST_NAME >" > $1
  print "< HOST_FQDN >" $2 "< /HOST_FQDN >" > $1
  print "< IP >"        $3 "< /IP >"        > $1
  print "< MAC >"       $4 "< /MAC >"       > $1

  close($1)
}' file

鉴于您的示例输入,它将创建两个文件,如下所示:

工作站1

< HOST_NAME >workstation1< /HOST_NAME >
< HOST_FQDN >workstation1.domain.com< /HOST_FQDN >
< IP >127.0.0.1< /IP >
< MAC >00:00:00:00:00:00< /MAC >

工作站2

< HOST_NAME >workstation2< /HOST_NAME >
< HOST_FQDN >workstation2.domain.com< /HOST_FQDN >
< IP >127.0.0.2< /IP >
< MAC >11:11:11:11:11:11< /MAC >