現在、スイッチで発生したすべてのエンドポイント名と呼び出しをキャプチャし、出力をファイルに送信するスクリプトを作成しています。
現在の出力は次のとおりです。
Registration ID Nitin_01
Ongoing Calls 9 (0:9)
Registration ID Nitin_02
Ongoing Calls 6 (6:0)
追加のエンドポイントは次のとおりです(約200個以上のエンドポイント)
ここで必要な出力は次のようになります。
Registration ID Ongoing Calls
Nitin_01 9
Nitin_02 6
スクリプトは次のとおりです。提案後に次の出力をスクリプトに保存すると、表示したい出力が表示されますが、元の列と列にはまだ表示されません。
出力は以下の通りです。
Nitin SBC:~ # cat /root/Nick.csv | more
Registration ID Ongoing Calls
Nitin_03 26
Nitin_01 0
パスワード:
ipath=/usr/local/nextone/bin
ifile=/root/Nick.csv
{ date '+%F %T';
"$ipath"/cli iedge list |
awk 'BEGIN { print "Registration ID", "Ongoing Calls"}
/Registration ID/ { id = $3; next }
/Ongoing Calls/ { print id, $3 }'
} >> "$ifile"`
cli iedge list
このコマンドは、スイッチに設定されているすべてのエンドポイントに関する情報を取得するのに役立ちます。
誰でもこの問題を解決するのに役立ちますか?
答え1
この試み:
ipath=/usr/local/nextone/bin
ifile=/root/Nick.csv
{ date '+%F %T';
"$ipath"/cli iedge list |
awk -v OFS='\t' \
'BEGIN { print "Registration ID", "Ongoing Calls"}
/Registration ID/ { id = $3; next }
/Ongoing Calls/ { print id, $3 }'
} >> "$ifile"
答え2
使用したい場合は、grep
次のようにできます。
paste <(cat input.txt | grep -oP "Registration ID\s+\K.+") <(cat input.txt | grep -oP "Ongoing Calls\s+\K.+")
これは、出力をcli iedge list
いくつかのinput.txt
ファイルに保存すると仮定します。
答え3
タブとパイプを出力するようにawkスクリプトを変更するcolumn -t -s<TAB>
ipath=/usr/local/nextone/bin
ifile=/root/Nick.csv
{ date '+%F %T';
"$ipath"/cli iedge list |
awk 'BEGIN {OFS="\t"; print "Registration ID", "Ongoing Calls" }
/Registration ID/ { id = $3; next }
/Ongoing Calls/ { print id, $3 }' |
column -t -s$'\t'
} >> "$ifile"`
出力は次のとおりです。
2015-06-03 11:11:33
Registration ID Ongoing Calls
Nitin_01 9
Nitin_02 6