У меня есть два текстовых файла. Одним из них является набор частот, которые я получаю с использованием RTL SDR. Эти частоты доступны в моем регионе. Другая база данных всех зарегистрированных частот в регионе. Я стремлюсь найти незарегистрированную частоту. Моя база данных:
ARFCN: 987, Freq: 927.6M, CID: 36233, LAC: 7713, MCC: 410, MNC: 4, Pwr: -37
ARFCN: 989, Freq: 928.0M, CID: 57501, LAC: 7716, MCC: 410, MNC: 4, Pwr: -45
ARFCN: 992, Freq: 928.6M, CID: 58531, LAC: 7716, MCC: 410, MNC: 4, Pwr: -42
ARFCN: 994, Freq: 929.0M, CID: 36231, LAC: 7713, MCC: 410, MNC: 4, Pwr: -31
ARFCN: 995, Freq: 929.2M, CID: 36232, LAC: 7713, MCC: 410, MNC: 4, Pwr: -39
ARFCN: 999, Freq: 930.0M, CID: 47081, LAC: 7716, MCC: 410, MNC: 4, Pwr: -36
ARFCN: 1004, Freq: 931.0M, CID: 36231, LAC: 7713, MCC: 410, MNC: 4, Pwr: -31
ARFCN: 1008, Freq: 931.8M, CID: 47103, LAC: 7713, MCC: 410, MNC: 4, Pwr: -37
ARFCN: 1010, Freq: 932.2M, CID: 40691, LAC: 7716, MCC: 410, MNC: 4, Pwr: -48
ARFCN: 1011, Freq: 932.4M, CID: 47102, LAC: 7713, MCC: 410, MNC: 4, Pwr: -50
ARFCN: 1, Freq: 935.2M, CID: 13013, LAC: 10421, MCC: 410, MNC: 1, Pwr: -65
ARFCN: 2, Freq: 935.4M, CID: 30889, LAC: 10421, MCC: 410, MNC: 1, Pwr: -60
ARFCN: 3, Freq: 935.6M, CID: 30928, LAC: 10470, MCC: 410, MNC: 1, Pwr: -45
ARFCN: 3, Freq: 935.6M, CID: 33272, LAC: 10421, MCC: 410, MNC: 1, Pwr: -65
ARFCN: 6, Freq: 936.2M, CID: 10096, LAC: 10470, MCC: 410, MNC: 1, Pwr: -27
ARFCN: 10, Freq: 937.0M, CID: 30911, LAC: 10470, MCC: 410, MNC: 1, Pwr: -47
ARFCN: 25, Freq: 940.0M, CID: 14429, LAC: 51136, MCC: 410, MNC: 3, Pwr: -44
ARFCN: 49, Freq: 944.8M, CID: 15535, LAC: 52207, MCC: 410, MNC: 3, Pwr: -27
ARFCN: 51, Freq: 945.2M, CID: 12408, LAC: 51136, MCC: 410, MNC: 3, Pwr: -46
ARFCN: 54, Freq: 945.8M, CID: 35535, LAC: 52207, MCC: 410, MNC: 3, Pwr: -49
ARFCN: 56, Freq: 946.2M, CID: 25535, LAC: 52207, MCC: 410, MNC: 3, Pwr: -51
ARFCN: 58, Freq: 946.6M, CID: 12941, LAC: 51136, MCC: 410, MNC: 3, Pwr: -35
ARFCN: 60, Freq: 947.0M, CID: 18662, LAC: 51136, MCC: 410, MNC: 3, Pwr: -58
ARFCN: 62, Freq: 947.4M, CID: 32941, LAC: 51136, MCC: 410, MNC: 3, Pwr: -52
ARFCN: 64, Freq: 947.8M, CID: 7673, LAC: 470, MCC: 410, MNC: 6, Pwr: -43
ARFCN: 66, Freq: 948.2M, CID: 10001, LAC: 470, MCC: 410, MNC: 6, Pwr: -27
ARFCN: 68, Freq: 948.6M, CID: 12941, LAC: 51136, MCC: 410, MNC: 3, Pwr: -50
ARFCN: 70, Freq: 949.0M, CID: 15132, LAC: 470, MCC: 410, MNC: 6, Pwr: -34
ARFCN: 71, Freq: 949.2M, CID: 5373, LAC: 470, MCC: 410, MNC: 6, Pwr: -44
ARFCN: 75, Freq: 950.0M, CID: 6561, LAC: 470, MCC: 410, MNC: 6, Pwr: -45
ARFCN: 79, Freq: 950.8M, CID: 10003, LAC: 470, MCC: 410, MNC: 6, Pwr: -48
ARFCN: 82, Freq: 951.4M, CID: 10002, LAC: 470, MCC: 410, MNC: 6, Pwr: -34
ARFCN: 86, Freq: 952.2M, CID: 0, LAC: 470, MCC: 410, MNC: 6, Pwr: -57
ARFCN: 117, Freq: 958.4M, CID: 20096, LAC: 10470, MCC: 410, MNC: 1, Pwr: -28
ARFCN: 119, Freq: 958.8M, CID: 12549, LAC: 10470, MCC: 410, MNC: 1, Pwr: -41
ARFCN: 120, Freq: 959.0M, CID: 30096, LAC: 10470, MCC: 410, MNC: 1, Pwr: -31
ARFCN: 122, Freq: 959.4M, CID: 33783, LAC: 10421, MCC: 410, MNC: 1, Pwr: -42
ARFCN: 124, Freq: 959.8M, CID: 42549, LAC: 10470, MCC: 410, MNC: 1, Pwr: -33
Принимая во внимание, что мой полученный файл частоты:
Script started on 2020-07-19 14:55:19+0500
linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown
ARFCN: 1004, Freq: 931.0M, CID: 36231, LAC: 7713, MCC: 410, MNC: 4, Pwr: -34
ARFCN: 1008, Freq: 931.8M, CID: 47103, LAC: 7713, MCC: 410, MNC: 4, Pwr: -30
ARFCN: 6, Freq: 936.2M, CID: 10096, LAC: 10470, MCC: 410, MNC: 1, Pwr: -27
ARFCN: 10, Freq: 937.0M, CID: 30911, LAC: 10470, MCC: 410, MNC: 1, Pwr: -33
ARFCN: 49, Freq: 944.8M, CID: 15535, LAC: 52207, MCC: 410, MNC: 3, Pwr: -28
ARFCN: 56, Freq: 946.2M, CID: 0, LAC: 0, MCC: 0, MNC: 0, Pwr: -50
ARFCN: 66, Freq: 948.2M, CID: 10001, LAC: 470, MCC: 410, MNC: 6, Pwr: -27
ARFCN: 79, Freq: 950.8M, CID: 10003, LAC: 470, MCC: 410, MNC: 6, Pwr: -43
ARFCN: 82, Freq: 951.4M, CID: 10002, LAC: 470, MCC: 410, MNC: 6, Pwr: -36
ARFCN: 100, Freq: 955.0M, CID: 667, LAC: 1007, MCC: 410, MNC: 3, Pwr: -27
Script done on 2020-07-19 14:58:05+0500
Видно, что оба списка не отсортированы. Теперь намереваемся создать новый текстовый файл или, по крайней мере, просто вывод на терминал ubuntu, чтобы отображалась частота, присутствующая в моем текущем списке частот, но не в базе данных. До сих пор я не смог найти взломать. Я написал сценарий оболочки:
#! /bin/sh
clear
echo " */\*/\*/\*/\*/\*/\*/\*/\*/\*/\*/\*/\* "
echo " C O N F L I C T I N G A R F C N s "
echo " *\/*\/*\/*\/*\/*\/*\/*\/*\/*\/*\/*\/* "
echo UNIQUE BTS TOWERS ARE
import bitarray
r = bitarray.bitarray(5000000000)
for line in open(alpha.txt):
r[int(line)] = True
for line in open(Database.txt):
if r[int(line)]:
print line
#set(open(alpha.txt)) & set(open(Database.txt))
#sort Database.txt alpha.txt | uniq -u
#comm -3 alpha.txt Database.txt
# Print lines in alpha.txt not in Database.txt
#words1 = set(open("Database.txt").read().split())
#words2 = set(open("alpha.txt").read().split())
#duplicates = words1.intersection(words2)
#uniques = words1.difference(words2).union(words2.difference(words1))
#print "Duplicates(%d):%s"%(len(duplicates),duplicates)
#print "\nUniques(%d):%s"%(len(uniques),uniques)
echo "The scan GSM frequencies are collected"
notify-send "COLLECTED!"
echo DONE!
Я перепробовал все эти альтернативы, но ни одна из них не сработала.
2 ответа
db = open('Database.txt', 'r')
dbLines = db.readlines()
alpha = open('alpha.txt', 'r')
alphaLines = alpha.readlines()
output=[line for line in alphaLines if line not in dbLines and line.startswith('ARFCN') ]
Выход:
['ARFCN: 1004, Freq: 931.0M, CID: 36231, LAC: 7713, MCC: 410, MNC: 4, Pwr: -34\n',
'ARFCN: 1008, Freq: 931.8M, CID: 47103, LAC: 7713, MCC: 410, MNC: 4, Pwr: -30\n',
'ARFCN: 10, Freq: 937.0M, CID: 30911, LAC: 10470, MCC: 410, MNC: 1, Pwr: -33\n',
'ARFCN: 49, Freq: 944.8M, CID: 15535, LAC: 52207, MCC: 410, MNC: 3, Pwr: -28\n',
'ARFCN: 56, Freq: 946.2M, CID: 0, LAC: 0, MCC: 0, MNC: 0, Pwr: -50\n',
'ARFCN: 79, Freq: 950.8M, CID: 10003, LAC: 470, MCC: 410, MNC: 6, Pwr: -43\n',
'ARFCN: 82, Freq: 951.4M, CID: 10002, LAC: 470, MCC: 410, MNC: 6, Pwr: -36\n',
'ARFCN: 100, Freq: 955.0M, CID: 667, LAC: 1007, MCC: 410, MNC: 3, Pwr: -27\n']
Python 3. Принимает пересечение двух наборов линий. Печатает их.
print(*(set(open('alpha.txt')) & set(open('Databse.txt'))), sep='')
Это работает до тех пор, пока оба ваших файла помещаются в память.
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.