比较文件夹中的所有文件

时间:2013-09-05 10:23:52

标签: linux bash parsing diff asterisk

我在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

我需要解析theese文件并查找始终处于脱机状态的扩展名,即在不变的文件中查找。

我该怎么做?

输出是:

/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

1 个答案:

答案 0 :(得分:0)

这个awk脚本将打印所有文件中的行:

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

工作原理:

  • 使用FNR==1{f++}我们计算解析的文件数(FNR等于每个文件第一行的一个)
  • {a[$0]++}我们计算每行出现的次数。
  • END块打印已找到f次的数组元素。