using regexp to parse specific line
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Marta Casta~ño
le 24 Oct 2022
Commenté : Mathieu NOE
le 24 Oct 2022
Hi,
I am trying to use regexp to parse different values of multiple lines in a file. A line looks like this:
{"timestamp": 1666599517.7899299, "cell_log_wdm0": "[/dev/cdc-wdm0] Successfully got signal info\nLTE:\n\tRSSI: '-65 dBm'\n\tRSRQ: '-15 dB'\n\tRSRP: '-97 dBm'\n\tSNR: '-3.2 dB'\n5G:\n\tRSRP: '-108 dBm'\n\tSNR: '7.5 dB'\n\tRSRQ: '-13 dB'\n"}
And I would like to get the timestamp, the name of the cell (wdm0), LTE RSRP and 5G RSRP. I am trying to use regexp but I am unsure of how to use it, or if it is even the right approach.
I would appreciate any help. :-)
0 commentaires
Réponse acceptée
Mathieu NOE
le 24 Oct 2022
hello
I assumed there could be more than one line , but I also assumed that they would be written exactly the same way so I ended up with this code, that assumes that data are always located in the same cell.
fyi , attached the dummy text file, I only changed a few numeric values to check my code
all the best
clearvars
filename = "test2.txt";
C = readcell(filename,'Delimiter',{';',':',',',''''});
[m,n] = size(C);
for ck = 1:m
timestamp(ck) = C{ck,2};
name_cell = C{ck,3};
idx = strfind(name_cell,'_');
name_of_the_cell{ck} = name_cell(idx(end)+1:end);
Data_LTE_RSRP{ck} = C{ck,13};
Data_5G_RSRP{ck} = C{ck,20};
end
2 commentaires
Plus de réponses (1)
chrisw23
le 24 Oct 2022
Modifié(e) : chrisw23
le 24 Oct 2022
lines = readlines("c:\temp\lineLog.txt")
subLines = lines.split("\n").replace("\t","")
dataTs = subLines(:,1).split(",");
dataLte = array2table(subLines(:,3:6).extractAfter(":").replace("'","").strip,VariableNames=["RSSI" "RSRQ" "RSRP" "SNR"])
data5G = array2table(subLines(:,8:end-1).extractAfter(":").replace("'","").strip,VariableNames=["RSRP" "SNR" "RSRQ"])
table(dataTs,dataLte,data5G)
dataTs dataLte data5G
RSSI RSRQ RSRP SNR RSRP SNR RSRQ
_______________________________________________________________________________________________________ _______________________________________________ __________________________________
"{"timestamp": 1666599517.7899299" " "cell_log_wdm0": "[/dev/cdc-wdm0] Successfully got signal info" "-65 dBm" "-15 dB" "-97 dBm" "-3.2 dB" "-108 dBm" "7.5 dB" "-13 dB"
"{"timestamp": 1666599517.7899299" " "cell_log_wdm0": "[/dev/cdc-wdm0] Successfully got signal info" "-65 dBm" "-15 dB" "-97 dBm" "-3.2 dB" "-108 dBm" "7.5 dB" "-13 dB"
"{"timestamp": 1666599517.7899299" " "cell_log_wdm0": "[/dev/cdc-wdm0] Successfully got signal info" "-65 dBm" "-15 dB" "-97 dBm" "-3.2 dB" "-108 dBm" "7.5 dB" "-13 dB"
as long as the format is defined, this could be a starting point for your parser
I saved your example line (3times) to a text file before.
0 commentaires
Voir également
Catégories
En savoir plus sur String Parsing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!