次の例に示すように、Ciscoインターフェイス部分を解析し、インターフェイスがダウンしている場合を除き、一部または正規表現があるかどうか疑問にsed
思います。grep
awk
例:
!
interface FastEthernet0/1
ip address 10.16.0.1 255.255.255.224
!
interface FastEthernet0/2
ip address 10.17.0.1 255.255.255.224
shutdown
!
sed
インターフェイス部分を解析するには、次の正規表現を使用します。
sed -n -e '/^interface/,/^!/p' file.txt
ただし、上記の正規表現はすべてのインターフェイスを解析し、インターフェイスを除外するわけではありません。
答え1
アッ
GNU awkまたはmawkを使用すると、次のことができます。
awk -v RS='!\n' '!/shutdown/'
出力:
interface FastEthernet0/1
ip address 10.16.0.1 255.255.255.224
3行目でのみshutdownを見つけると、より正確に一致させることができます。
awk -v RS='!\n' -v FS='\n +' '$3 !~ /shutdown/'
sed
もちろん、sedを使用することもできますが、より複雑です。
1つのアプローチは開始方法ですが、印刷する前に予約済みスペースにレコード全体を収集します。これはGNU sedで動作します。
sed -n '/^interface/,/^!/ H; 1b; /^!/ { z; x; s/^\n//g; /shutdown/!p }'