linux - 比较文件夹中的所有文件

标签 linux bash parsing diff asterisk

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

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

最佳答案

此 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 block 打印已找到 f 次的数组元素。

关于linux - 比较文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633788/

相关文章:

python - 如何使用带有 clang 绑定(bind)的 python 获取 C++ header 中的方法列表?

python - 如何在 Python 中进行 "performance-based"(基准)单元测试

linux - nohup 进程显示在 ps 中但不在 top 中

bash - 为什么 ZSH 卡在空重定向上?

python - 将分数转换为 float ?

parsing - llvm-clang : incremental or online parser?

linux - clone()/fork()/进程创建在某些机器上很慢

django - 从运行服务器迁移到生产服务器

linux - 用于运行多个进程的 Shell 脚本

Bash 脚本列出未找到的文件