アップデート:まず、デバイスの完全な設定セクションを見て問題を解決しました。次に、次のコマンドを使用しますegrep -wir 'peer' test* | uniq | sort | cut -d\ -f3 ~/test.txt
。
- これが私が得た結果です:
neighbour 00.000.0.000 (the IP address, I just put all 0s as an example) abc-hub nib SEC-INC-PA-int Azure_ER_key abc23 ijf689 jkl412 kli456 peer
出力にのみインポートするようにフィルタリングするにはどうすればよいですか? :
abc23
ijf689
jkl412
kli456
特定の場所のハブ別にグループ化された特定の顧客のすべてのルーターのリストを取得する必要があります。顧客の名前がと仮定しますtest
。
- 顧客構成ファイルの例は次のとおりです。
abc23 interface: Tunnel000 Type:Hub aqw789 interface: Tunnel222 Type:Spoke ert458 interface: Tunnel111 Type:Spoke ijf689 interface: Tunnel333 Type:Hub jkl412 interface: Tunnel000 Type:Hub/Spoke kli456 interface: Tunnel111 Type:Hub
このコマンドを試してみました。
egrep -wir 'hub' test* cut -d : -f1 | uniq
しかし、期待した結果は得られませんでした。
出力が次のようになります。
abc23
ijf689
jkl412
kli456
ちなみに私はGNUを使用しています。 Linuxバージョン3.2.0-6-amd64、GCCバージョン4.9.2
ご協力ありがとうございました!ありがとうございます! :)
答え1
man grep awk
以下を読んで実行してください。
grep -B1 -w -i "hub" test | \
grep -i "interface:" | \
awk '{print $1}'
答え2
grep -B 1 "Type:Hub" test* | grep "interface:" | awk '{print $1}'
答え3
次のawk
プログラムは、次のことを行う必要があります。
awk '$1~/^Type/{split($1,f,/:/);t=f[2]} $2~/^interface/{if (id && t~/Hub/) print id; id=$1; t=""} END{if (id && t~/Hub/) print id}' test.txt
:
これは、余分な空白なしで(特にドアの内側とType
周囲の/
)フォーマットが表示されているのとまったく同じであると仮定します。
- 「Word」で始まる最初の行から行を配列
Type
に分割し、2番目の項目を変数として保存します。:
f
t
- 2番目の「Word」で始まる行に
interface
最初の「Word」(ルーターID)を保存します。その前に、前の履歴からルーターIDが保存されていることを確認してください。もしそうなら、古いタイプに「Hub」という単語が含まれている場合は、古いIDを印刷します。また、t
解析を妨げる「残りの」情報がないことを確認するためにリセットしました。 - ファイルの最後でも同じことを行います。
答え4
sed -e 'N; y/\n/ /' -e '/Type:Hub/!d; s/ .*//' file
これは、一対のinterface:
-Type:
ラインを一緒に結合し、次のラインをN; y/\n/ /
含めた後sed
abc23 interface: Tunnel000 Type:Hub
aqw789 interface: Tunnel222 Type:Spoke
ert458 interface: Tunnel111 Type:Spoke
ijf689 interface: Tunnel333 Type:Hub
jkl412 interface: Tunnel000 Type:Hub/Spoke
kli456 interface: Tunnel111 Type:Hub
(N
次の行をバッファに追加し、行間y/\n/ /
に含まれる改行を空白に置き換えます。)
コマンドの残りの部分は、sed
一致しないすべての行を削除し、残りの行のType:Hub
最初の空白文字内のすべての項目を削除します。/Type:Hub/!d
不要な行を削除し、s/ .*//
最初のスペースの行を切り捨てます。
あなたが得る最終結果は
abc23
ijf689
jkl412
kli456