将值从txt文件复制到另一个文件中的特定位置 - 脚本Shell

时间:2017-11-06 18:42:33

标签: bash shell

并感谢您的帮助。 我有一个txt文件作为模板: === Template.txt ============================================ ==============

BT-qos- profile = "ABCDEF",
BT-type- collecte = "%{Request}",
BT-sous- type-collecte = "%{Request}",
Framed-IP- Address = "XX.XX.XX.XX",
Framed-IP- Netmask = "255.255.255.240",
BT-domain = "bbox.fr",

===== Ips_file.txt ======================================= ===================

10.20.30.40
11.22.33.44
111.222.333.444
(each ip is in a line)

=============================================== ======================= 我想创建一个shell脚本,可以从第二个文件读取ips并复制每个ip并放入第一个文件“XX.XX.XX.XX”。 每次复制后保存文件。我将拥有与Ips一样多的文件。

我不熟悉shell脚本,所以如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

目前尚不清楚如何命名这些文件。 为简单起见,让我们用越来越多的数字来命名它们。 你可以逐行阅读ips, 并使用sed替换模板中的值并生成输出文件:

placeholder='XX\.XX\.XX\.XX'

i=1
while IFS= read -r ip; do
    sed -e "s/$placeholder/$ip/" Template.txt > $i.txt
    ((i++))
done < Ips_file.txt

答案 1 :(得分:0)

您也可以awk执行此操作:

awk 'FILENAME=="template.txt"{template=template$0"\n"} FILENAME=="ips_file.txt"{template_out=template; gsub(/XX\.XX\.XX\.XX/,$1, template_out); print template_out > $1".txt"}' template.txt ips_file.txt

这将通过ip地址为每个IP名称创建一个新文件,并附加.txt