我正在掃描cisco configs,用於沒有描述但沒有關閉的接口。awk/sed - 在文本行之間搜索以返回文本
如果接口沒有描述,應該關閉。
如果接口有說明,這總是接口之後的第一行。我寫了一個腳本,用awk顯示了我所有的接口和描述,但我不確定如何做更復雜的事情。
我已經運行這個(如果'接口'之後的行不是與'描述')。
awk '{if ((lastline ~ /^interface/) && ($0 !~ /^ description/)) {print FILENAME ";" lastline ORS FILENAME ";" $0} lastline=$0}'
但問題是,有些行以'interface'開頭,根本沒有配置,或者有其他的東西。所以它會收集錯誤的信息。
我需要查看以'interface'開頭的每行實例之間的所有行,並且如果沒有以'description'或'shutdown'開頭的行,那麼我需要它來打印界面線以及文件名。對我來說有點複雜,我是初學者! :(
因此,例如,這個文件:
interface GigabitEthernet3/23
logging event link-status
shutdown
interface GigabitEthernet3/24
interface Vlan1
description 'VLAN 1'
interface Vlan2
no ip address
interface Vlan4
shutdown
將返回
interface GigabitEthernet3/24
interface Vlan2
不錯的一個!問題是我意識到我的實際文件沒有!作爲分隔符。他們被刪除時,我拉配置。編輯我的輸出上面。 –
似乎可以正常工作,但不能完美地使用'界面'作爲記錄分隔符。唯一的一點是,它會錯過'接口'的最後一個實例... –
也jotne - 我如何配置,以便記錄分隔符只是以'界面'開頭的行? RS =「^ interface」或RS = /「interface」似乎不起作用。 –