【发布时间】:2014-04-20 23:16:03
【问题描述】:
我一直在尝试找到一种方法,以某种方式在每个文件的共同点合并三个文件,我想我会寻求帮助。我的搜索使我了解了从 sed 和 awk 到数组的许多可能的解决方案。 router.txt 文件是骨架文件,我想读入 vars.txt 和 cleanup.txt 以生成一个包含每个部分内容的单个文件。合并后的文件应该包含所有部分,每个文件的每个部分都包含所有相关数据。
我已经尝试了以下数组:
rtimeserver=(`sed -n "/TIME SERVER/,/! -/p" router.txt | sed '/! -/{2,$d}' `)
vtimeserver=(`sed -n "/TIME SERVER/,/! -/p" vars.txt | sed '/! -/{2,$d}' `)
cleantimeserver=(`sed -n "/TIME SERVER/,/! -/p" cleanup.txt | sed '/! -/{2,$d}' `)
通过以下内容,我可以只打印我想要的每个文件的部分。
printf "%s\n" "${rtimeserver[@]}"
printf "%s\n" "${vtimeserver[@]}"
printf "%s\n" "${cleantimeserver[@]}"
但我无法弄清楚如何在路由器文件中找到该部分并从其他文件中滑入这些部分。我想我可以使用 SED 的搜索功能来查找该部分并转储数组内容,但我需要帮助。
非常感谢您愿意提供的任何帮助。
在此先感谢,
迈克
路由器.txt
!
! ---- NAME SERVER ----
! ---- TIME SERVER ----
ntp trusted-key
ntp authenticate
ntp source Loopback0
! ---- TACACS CONFIG ----
!
ip tacacs source-interface Loopback 0
tacacs-server retransmit 2
tacacs-server timeout 2
no tacacs-server directed-request
vars.txt
! ---- NAME SERVER ----
no ip name-server
ip domain-name lab.com
ip domain name lab.com
ip domain-list lab.com
ip domain-list int.lab.com
! ---- TIME SERVER ----
ntp server 1.1.1.1
sntp server 2.2.2.2
! ---- TACACS CONFIG ----
tacacs-server key 1111111111
tacacs-server host 1.1.1.1
tacacs-server host 1.1.1.2
清理.txt
! ---- NAME SERVER ----
no ip dns server-address 3.3.3.3
no ip dns server-address 3.3.3.4
no ip dns server-address 3.3.3.5
! ---- TIME SERVER ----
no clock summer-time
sntp poll-interval 65535
clock timezone gmt GMT+00
ip sntp source-interface loopback 1
! ---- TACACS CONFIG ----
tacacs-server host 3.3.3.3
tacacs-server host 3.3.3.4
tacacs-server host 3.3.3.5
merged.txt
! ---- TIME SERVER ----
ntp trusted-key
ntp authenticate
ntp source Loopback0
ntp server 1.1.1.1
sntp server 2.2.2.2
no clock summer-time
sntp poll-interval 65535
clock timezone gmt GMT+00
ip sntp source-interface loopback 1
【问题讨论】: