0

我在 crontab 中有一个脚本,它每 30 分钟创建一次文件,其中包含星号中的离线对等点列表:

now=$(date +"%Y%m%d%H%M")
/usr/sbin/asterisk -rx 'sip show peers' | grep "Unspec" | sed 's/[/].*//' >> /var/log/asterisk/offline/offline_$now

我需要解析这些文件并找到始终处于脱机状态的扩展名,即恒定文件中的刺痛。

我怎样才能做到这一点?

输出是:

/usr/sbin/asterisk -rx 'sip show peers' | grep "Unspec" | sed 's/[/].*//' | tail -3
891
894
899

ls /var/log/asterisk/offline/
offline_201309051400  offline_201309051418  offline_201309051530  offline_201309051700 
offline_201309051830  offline_201309052000  offline_201309052130
offline_201309051405  offline_201309051430  offline_201309051600  offline_201309051730  
offline_201309051900  offline_201309052030  offline_201309052200
offline_201309051406  offline_201309051500  offline_201309051630  offline_201309051800    
offline_201309051930  offline_201309052100  offline_201309052230
4

1 回答 1

0

此 awk 脚本将打印所有文件中存在的行:

awk 'FNR==1{f++}{a[$0]++}END{for (i in a) if (a[i]==f) print i}' offline_*

这个怎么运作:

  • 我们计算被解析的文件数(FNR==1{f++}每个文件的第一行 FNR 等于 1)
  • 我们计算每行出现了{a[$0]++}多少次。
  • END块打印已找到 f 次的数组元素。
于 2013-09-05T19:24:14.883 回答