You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于RTL SDR采集频率与注册数据库对比查找未注册频率的问询

我来帮你搞定这个问题!之前用Shell脚本没成功大概率是因为频率匹配的格式或者字段提取没处理好,下面给你几个靠谱的方案,根据你的文件格式选就行:

先明确前提(你可以根据实际情况调整)

假设:

  • 采集到的频率文件叫 collected_freqs.txt,每行仅包含一个频率值(比如900.123)
  • 注册数据库文件叫 registered_db.txt,包含表头(比如ARFCN Freq CID),频率在第二列,用空格/制表符分隔

方案1:精准字符串匹配(最常用)

适合两个文件里的频率格式完全一致的情况,直接提取数据库里的频率,再对比采集文件:

# 一步到位,直接输出到终端
grep -vxFf <(grep -v "^ARFCN" registered_db.txt | awk '{print $2}') collected_freqs.txt

# 要输出到新文件的话,加重定向
grep -vxFf <(grep -v "^ARFCN" registered_db.txt | awk '{print $2}') collected_freqs.txt > unregistered_freqs.txt

参数解释:

  • -v:反向匹配(找不在注册列表里的内容)
  • -x:整行匹配(避免比如900.12和900.123被误判为匹配)
  • -F:把搜索内容当作固定字符串(不是正则表达式)
  • -f <(...):从管道输出里读取要排除的频率列表
  • grep -v "^ARFCN":跳过数据库的表头行

方案2:处理数值精度差异

如果采集的频率和数据库里的频率存在小数精度差异(比如采集是900.123,数据库是900.12),用awk做数值对比更稳妥:

# 基础版:直接匹配数值
awk '
NR==FNR { if (NR>1) db_freqs[$2]=1; next }
{ if (!db_freqs[$0]) print $0 }
' registered_db.txt collected_freqs.txt > unregistered_freqs.txt

# 带误差容忍版:允许±0.001的精度差异
awk -v tolerance=0.001 '
NR==FNR { if (NR>1) db_freqs[$2]=1; next }
{
    found=0
    for (f in db_freqs) {
        if (abs($0 - f) <= tolerance) {
            found=1
            break
        }
    }
    if (!found) print $0
}
function abs(x) { return x < 0 ? -x : x }
' registered_db.txt collected_freqs.txt

方案3:数据库是CSV格式(逗号分隔)

如果你的注册数据库是CSV(比如ARFCN,Freq,CID),只需要修改awk的分隔符:

grep -vxFf <(grep -v "^ARFCN" registered_db.csv | awk -F, '{print $2}') collected_freqs.txt

方案4:大文件高效对比(用comm命令)

如果文件特别大,先排序再用comm命令会更快:

# 先分别排序两个频率列表
sort collected_freqs.txt > sorted_collected.txt
grep -v "^ARFCN" registered_db.txt | awk '{print $2}' | sort > sorted_registered.txt

# 找出仅在采集文件里出现的频率
comm -23 sorted_collected.txt sorted_registered.txt > unregistered_freqs.txt

参数解释:comm -23 表示只显示第一个文件独有的行。


额外注意事项

  1. 如果频率带单位(比如900.123 MHz),要先统一格式,比如用sed 's/ MHz//' collected_freqs.txt去掉单位
  2. 如果数据库表头不是ARFCN,把grep -v "^ARFCN"里的字符串换成你的实际表头内容

内容的提问来源于stack exchange,提问作者mosterup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:32:51