我目前正在编写一个脚本,该脚本将捕获交换机上的所有端点名称和正在进行的调用,并将输出发送到一个文件。
目前输出如下。
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