Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 4

Поиск и копирование данных

11.03.2014, 15:29. Показов 880. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Есть огромный текстовый файл (выгрузка всех потоков сигнализаций с контроллера)
Необходимо осуществить поиск по ключевому слову и скопировать несколько строк после ключевого в отдельный файл каждый раз как это слово по пути встречаться будет.
Как именно осуществить поиск?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2014, 15:29
Ответы с готовыми решениями:

Поиск и копирование данных в новый лист
С праздничком! Хотелось бы продолжить тему "выберем и скопируем без фильтра". Надеюсь, что команду копирования напишу сам. А вот...

Поиск не пустых ячеек и копирование данных
Добрый день. Необходим макрос для Excel документа, в котором имеется таблица. В колонке "Кол-во" необходимо найти не пустые...

Поиск данных в листах и копирование их в отдельные листы
Есть файл который обновляется каждый день. В нём есть колонка U. Нужен макрос, который бы искал по данной колонке определённые слова из...

8
Эксперт по электронике
 Аватар для R2D2
939 / 839 / 121
Регистрация: 23.11.2012
Сообщений: 2,488
11.03.2014, 15:42
Можно через strfind. Можно и в See Also заглянуть...
0
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
12.03.2014, 11:20
Можно и через regexp.
Мне кажется, примерчик исходного файла (не целиком, конечно, раз он "огромный текстовый файл") не помешал бы...
0
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 4
12.03.2014, 16:41  [ТС]
Да, что то я не подумал.

Ниже пример нескольких EVENTов
Клац
EVENT
SCANNER_ID: 000000100000000000000000
Hour: 14 Minute: 30 Second: 00 Millisecond: 102
Event_ID: 22
Name: RRC_SECURITY_MODE_COMMAND
UE_CONTEXT: 299
RNC_MODULE_ID: 23
C_ID_1: 509
RNC_ID_1: 2231
C_ID_2: 508
RNC_ID_2: 2231
C_ID_3: EVENT_VALUE_INVALID
RNC_ID_3: EVENT_VALUE_INVALID
C_ID_4: EVENT_VALUE_INVALID
RNC_ID_4: EVENT_VALUE_INVALID
PDU_TYPE: 1
PROTOCOL_ID: 0
MESSAGE_DIRECTION: SENT
MESSAGE_LENGTH: 26
MESSAGE_CONTENTS: value DL-DCCH-Message ::= {
integrityCheckInfo {
messageAuthenticationCode '10111111 01111001 01101010 10110100'B,
rrc-MessageSequenceNumber 1
},
message securityModeCommand : r3 : {
securityModeCommand-r3 {
rrc-TransactionIdentifier 0,
securityCapability {
cipheringAlgorithmCap {uea1, uea0},
integrityProtectionAlgorithmCap {uia1}
},
cipheringModeInfo {
cipheringModeCommand startRestart : uea1,
rb-DL-CiphActivationTimeInfo {
{
rb-Identity 1,
rlc-SequenceNumber 0
},
{
rb-Identity 2,
rlc-SequenceNumber 15
},
{
rb-Identity 3,
rlc-SequenceNumber 0
},
{
rb-Identity 4,
rlc-SequenceNumber 0
}
}
},
integrityProtectionModeInfo {
integrityProtectionModeCommand startIntegrityProtection : {
integrityProtInitNumber '10001111 11110111 11000111 00100110'B
},
integrityProtectionAlgorithm uia1
},
cn-DomainIdentity ps-domain,
ue-SystemSpecificSecurityCap {
gsm : {
gsmSecurityCapability {a5-3, a5-1}
}
}
}
}
}


EVENT
SCANNER_ID: 000000100000000000000000
Hour: 14 Minute: 30 Second: 00 Millisecond: 144
Event_ID: 8
Name: RRC_MEASUREMENT_REPORT
UE_CONTEXT: 299
RNC_MODULE_ID: 23
C_ID_1: 509
RNC_ID_1: 2231
C_ID_2: 508
RNC_ID_2: 2231
C_ID_3: EVENT_VALUE_INVALID
RNC_ID_3: EVENT_VALUE_INVALID
C_ID_4: EVENT_VALUE_INVALID
RNC_ID_4: EVENT_VALUE_INVALID
PDU_TYPE: 2
PROTOCOL_ID: 0
MESSAGE_DIRECTION: RECEIVED
MESSAGE_LENGTH: 11
MESSAGE_CONTENTS: value UL-DCCH-Message ::= {
message measurementReport : {
measurementIdentity 5,
measuredResults intraFreqMeasuredResultsList : {
{
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 237
},
cpich-Ec-N0 19,
cpich-RSCP 23
}
},
{
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 245
},
cpich-Ec-N0 20,
cpich-RSCP 23
}
}
}
}
}


EVENT
SCANNER_ID: 000000100000000000000000
Hour: 14 Minute: 30 Second: 00 Millisecond: 164
Event_ID: 8
Name: RRC_MEASUREMENT_REPORT
UE_CONTEXT: 299
RNC_MODULE_ID: 23
C_ID_1: 509
RNC_ID_1: 2231
C_ID_2: 508
RNC_ID_2: 2231
C_ID_3: EVENT_VALUE_INVALID
RNC_ID_3: EVENT_VALUE_INVALID
C_ID_4: EVENT_VALUE_INVALID
RNC_ID_4: EVENT_VALUE_INVALID
PDU_TYPE: 2
PROTOCOL_ID: 0
MESSAGE_DIRECTION: RECEIVED
MESSAGE_LENGTH: 18
MESSAGE_CONTENTS: value UL-DCCH-Message ::= {
message measurementReport : {
measurementIdentity 11,
measuredResults intraFreqMeasuredResultsList : {
{
cellSynchronisationInfo {
modeSpecificInfo fdd : {
countC-SFN-Frame-difference {
countC-SFN-High 0,
off 7
},
tm 26111
}
},
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 245
},
cpich-Ec-N0 20,
cpich-RSCP 23
}
},
{
cellSynchronisationInfo {
modeSpecificInfo fdd : {
countC-SFN-Frame-difference {
countC-SFN-High 0,
off 7
},
tm 26624
}
},
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 237
},
cpich-Ec-N0 19,
cpich-RSCP 23
}
}
}
}
}


EVENT
SCANNER_ID: 000000100000000000000000
Hour: 14 Minute: 30 Second: 00 Millisecond: 424
Event_ID: 8
Name: RRC_MEASUREMENT_REPORT
UE_CONTEXT: 299
RNC_MODULE_ID: 23
C_ID_1: 509
RNC_ID_1: 2231
C_ID_2: 508
RNC_ID_2: 2231
C_ID_3: EVENT_VALUE_INVALID
RNC_ID_3: EVENT_VALUE_INVALID
C_ID_4: EVENT_VALUE_INVALID
RNC_ID_4: EVENT_VALUE_INVALID
PDU_TYPE: 2
PROTOCOL_ID: 0
MESSAGE_DIRECTION: RECEIVED
MESSAGE_LENGTH: 15
MESSAGE_CONTENTS: value UL-DCCH-Message ::= {
integrityCheckInfo {
messageAuthenticationCode '00000000 00000000 00000000 00000010'B,
rrc-MessageSequenceNumber 0
},
message measurementReport : {
measurementIdentity 5,
measuredResults intraFreqMeasuredResultsList : {
{
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 245
},
cpich-Ec-N0 21,
cpich-RSCP 24
}
},
{
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 237
},
cpich-Ec-N0 18,
cpich-RSCP 23
}
}
}
}
}


EVENT
SCANNER_ID: 000000100000000000000000
Hour: 14 Minute: 30 Second: 00 Millisecond: 894
Event_ID: 8
Name: RRC_MEASUREMENT_REPORT
UE_CONTEXT: 299
RNC_MODULE_ID: 23
C_ID_1: 509
RNC_ID_1: 2231
C_ID_2: 508
RNC_ID_2: 2231
C_ID_3: EVENT_VALUE_INVALID
RNC_ID_3: EVENT_VALUE_INVALID
C_ID_4: EVENT_VALUE_INVALID
RNC_ID_4: EVENT_VALUE_INVALID
PDU_TYPE: 2
PROTOCOL_ID: 0
MESSAGE_DIRECTION: RECEIVED
MESSAGE_LENGTH: 18
MESSAGE_CONTENTS: value UL-DCCH-Message ::= {
integrityCheckInfo {
messageAuthenticationCode '00000000 00000000 00000000 00000010'B,
rrc-MessageSequenceNumber 0
},
message measurementReport : {
measurementIdentity 6,
measuredResults intraFreqMeasuredResultsList : {
{
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 245
},
cpich-Ec-N0 23,
cpich-RSCP 26
}
},
{
modeSpecificInfo fdd : {
primaryCPICH-Info {
primaryScramblingCode 237
},
cpich-Ec-N0 15,
cpich-RSCP 21
}
}
},
eventResults intraFreqEventResults : {
eventID e1d,
cellMeasurementEventResults fdd : {
{
primaryScramblingCode 245
}
}
}
}
}


Соответственно вот что я пока написал:
clc
clear
k=fopen('D:\140306-2030-2045.txt','w');
fl=0;
fid=fopen('D:\A20140306.1145+0600-1200+0600_SubNetwork=RNC04CHL,MeContext= RNC04CHL_20001_SubNetwork=ONRM_ROOT_MO_R ,SubNetwork=RNC04CHL,MeContext=RNC04CHL, ManagedElement=1,RncFunction=1,UtranCell =CELL_74_050_2_U_ctrfile_74_500.txt');
while 1
tline = fgetl(fid);
if ~ischar(tline), break, end
if findstr('EVENT',tline)==1;
fl=1;
end
if strfind(tline,'Name: RRC_MEASUREMENT_REPORT')==1;
fl=2;
end
if findstr(tline,'UE_CONTEXT')==1 & fl==2;
P=fprintf(k,'%s\r\n',tline);
end
if findstr('C_ID_1',tline)==1 & fl==2;
P=fprintf(k,'%s\r\n',tline);
end
if findstr('RNC_ID_1',tline)==1 & fl==2;
P=fprintf(k,'%s\r\n',tline);
end
if findstr('primaryScramblingCode',tline)== 1 & fl==2;
P=fprintf(k,'%s\r\n',tline);
end
if findstr('cpich-Ec-N0',tline)==1 & fl==2;
P=fprintf(k,'%s\r\n',tline);
end
if findstr('cpich-RSCP',tline)==1 & fl==2;
P=fprintf(k,'%s\r\n',tline);
end
end
fclose(fid);
fclose(k);

Думаю отсюда понятно, какие именно строки я хочу перекопировать.
Но на выходе пустой файл.

p.S fl=1 на выходе почему-то.

Добавлено через 1 час 21 минуту
Ipgrade:

Разобрался. Получилось. Теперь получилось следующее
КЛАЦ
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231
primaryScramblingCode 237
cpich-Ec-N0 35,
cpich-RSCP 22
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231
primaryScramblingCode 237
cpich-Ec-N0 35,
cpich-RSCP 22
primaryScramblingCode 245
cpich-Ec-N0 25,
cpich-RSCP 16
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231
primaryScramblingCode 237
cpich-Ec-N0 37,
cpich-RSCP 22
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231
UE_CONTEXT: 2209
C_ID_1: 508
RNC_ID_1: 2231
RNC_ID_1: 2231


Надо бы теперь это как то в Матлаб загнать. Т.е оставить только цифры и распределить по матрице. Вот пытаюсь через fscanf, но пока ничего толкового.

Добавлено через 15 минут
Upgrade: Если искать через fscanf, то даже если нахожу просто число в этой куче, оно записано как символ.
0
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
12.03.2014, 21:03
Цитата Сообщение от TemperOK Посмотреть сообщение
оставить только цифры и распределить по матрице
Это что значит?
0
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 4
13.03.2014, 07:09  [ТС]
Необходимо сформировать матрицу, где
1 - столбец - UE_CONTEXT
2 - C_ID_1 и так далее.
Чтобы потом производить необходимые вычисления.
0
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
13.03.2014, 18:31
А еще подробнее? Опирайтесь на Ваше "Теперь получилось следующее".
0
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 4
13.03.2014, 20:33  [ТС]
Чтобы не путать Вас и самому не запутаться попробую перефразировать.
Дана строка:
tline='UE_CONTEXT: 2209'
Как из неё достать 2209. Необходимо достать в виде матрицы, а не в виде строки.
0
536 / 523 / 38
Регистрация: 13.03.2011
Сообщений: 728
14.03.2014, 03:17
Может, "в виде числа"?
Если я Вас правильно понял, то Вам нужно вот так (должно подходить под все строки, что указаны в "Теперь получилось следующее" ):
Matlab M
1
2
3
x = regexp(tline,'(.*?):?\s*(\d+)$','tokens');
id_string = x{1}{1}
value = x{1}{2}
Добавлено через 4 минуты
Странно у Вас записано условие цикла. Обычно пишут
Matlab M
1
while ~feof(fid)
Тогда Ваша строка
Matlab M
1
if ~ischar(tline), break, end
не нужна.
И читается код логично: "пока не достигнут конец файла".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2014, 03:17
Помогаю со студенческими работами здесь

Поиск значения и копирование данных соседних ячеек
Добрый день. Проблема в следующем: Есть 2 книги: База и Заявка. База - содержит название продукта и его характеристики. Заявка -...

Поиск данных, копирование данных
Прошу помощи. Имею два файла с данными. В первом файле есть столбец с номерами. Во втором файле также есть столбец с номерами в котором...

Сравнение (поиск) ячеек из столбца и копирование к ним дополнительных данных
Добрый день! У меня к сожалению пока посредственные знания VBA, но я уже примерно попытался набросать некие заготовки... У меня...

Поиск в документе, копирование данных нескольких однотипных таблиц в новый документ
Знатоки, помогите пожалуйста, целый день ищу нечто подобное, своих знаний в VBA не хватает. Описание задачи: Есть несколько (количество...

Поиск пользователя в AD по ID, копирование его данных и перенос их в другую базу пользователей AD
нужен скрипт который: 1. ищет пользавателя в AD по id 2. копирует его данные 3. переносит в другую базу пользователей AD


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru