出力を行と列に分割する必要がある

出力を行と列に分割する必要がある

現在、スイッチで発生したすべてのエンドポイント名と呼び出しをキャプチャし、出力をファイルに送信するスクリプトを作成しています。

現在の出力は次のとおりです。

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

関連情報