2017-11-14 15 views
1

さまざまなコマンドを実行し、各コマンドの結果を1つの列に出力するスクリプトを作成しようとしていますが、出力を列に表示できません。事前にBASH - 複数のコマンドを列に出力する

NEIGHBOR | IP | TIME | STATE 

ありがとう:

#!/bin/bash 

# Get GBP Neighbour NAMES 
NEIGHBOR=$(vtysh -c 'show ip bgp neighbors' | grep Incoming | awk '{print $7}') 

# Get IPs of BGP neighbours 
IP=$(vtysh -c 'show ip bgp summary' | awk '{print $1}' | head -n -2 | tail -n +6) 

# Get Up/Down time 
TIME=$(vtysh -c 'show ip bgp summary' | awk '{print $9}' | head -n -2 | tail -n +6) 

# Get State/PfxRcd 
STATE=$(vtysh -c 'show ip bgp summary' | awk '{print $10}' | head -n -2 | tail -n +6) 

はどうすれば出力は以下のような列に分離するために取得することができます!助けのための@RomanPerekhrest

EDIT

ありがとう!

作業するスクリプト:

#!/bin/bash 

# Get GBP Neighbour NAMES 
NEIGHBOR=$(vtysh -c 'show ip bgp neighbors' | grep "Incoming" | awk '{print $7}') 
# Get IPs of BGP neighbours 
IP=$(vtysh -c 'show ip bgp summary' | awk '{print $1}' | head -n -2 | tail -n +6) 
# Get Up/Down time 
TIME=$(vtysh -c 'show ip bgp summary' | awk '{print $9}' | head -n -2 | tail -n +6) 
# Get State/PfxRcd 
STATE=$(vtysh -c 'show ip bgp summary' | awk '{print $10}' | head -n -2 | tail -n +6) 
# Generate Titles for table 
TITLE=$(paste -d'|' <(echo "NEIGHBOR") <(echo "IP") <(echo "UPTIME") <(echo "STATE")) 
# Generate table 
LIST=$(paste -d'|' <(echo "$NEIGHBOR") <(echo "$IP") <(echo "$TIME") <(echo "$STATE")) 
# Merge titles and table 
OUTPUT=$(echo -e "$TITLE" && echo -e "$LIST") 
# Display output 
echo -e "" 
echo -e "------------------------------------------------" 
echo -e "NEIGHBORS AND STATUS" 
echo -e "------------------------------------------------" 
echo -e "" 
echo -e " $OUTPUT" | column -s'|' -t # Echo output and colmnize it 
echo -e "" 

これは均等に表スペースタイトルとコンテンツを生成します。最終的に| column -s'|' -techoに設定することが重要でした。なぜなら、タイトルが正しく整列していなかったからです。 pasteコマンドで

答えて

2

paste -d'|' <(echo "$NEIGHBOR ") <(echo "$IP") <(echo "$TIME") <(echo "$STATE") 
+0

うわー!すばらしいです!とにかく列の幅を同じにするには?よりきれいに見えるようにし、読みやすくしますか? –

+0

@KevinMaschke、 'column'コマンドにパイプしようとしました、' paste ... |列-s '|' -t' – RomanPerekhrest

+0

ありがとう@RomanPerekhrest! '|を追加する列-s '|' -tはそのトリックをやった!私は最終結果で質問を編集しました! –

関連する問題