I am writing a lua script for Yamaha router, but I am having trouble with string operation.
Could you please provide me with a script to edit the contents of the array as follows?
·Original data
{ANONYMOUS03, L2TP session not succeeded, start: April 24, 2022 18:48:19, contact: PC1001
, ANONYMOUS04, L2TP session not succeeded, start: April 25, 2022 12:38:39, contact: PC1002}
·The shape you want to process
{ANONYMOUS03="PC1001",ANONYMOUS04="PC1002"}
{ANONYMOUS03="April 24, 2022 18:48:19",ANONYMOUS04="April 25, 2022 12:38:39"}
◆Description
I would like to create an array of ANONYMOUS numbers and connecting names, ANONYMOUS numbers and starting times from the original data.
◆Tried code
First of all, in order to remove unnecessary elements for each array, I wrote the following code, but it didn't work.
--Remove unnecessary elements
fork, vin pairs (array) do
if(string.find(v, "ANONYMOUS") or string.find(v, "Connected") == nil then
table.remove(array,k)
end
end
·The above print result
1 ANONYMOUS03
2 Status of last L2TP session:
3 Connected to: PC1001
4 ANONYMOUS04
5 Status of the last L2TP session:
6 Destination: PC1002
This is an example script that creates a new table by extracting what you need instead of deleting what you don't need.
The results are set to array_connection and array_starttime.
local array={
"ANONYMOUS03", "L2TP session not succeeded", "Start: April 24, 2022 18:48:19", "Connected to: PC1001",
"ANONYMOUS04", "L2TP session not succeeded", "Start: April 25, 2022 12:38:39", "Connected to: PC1002"
}
array_connection={}
array_starttime={}
fork, vin pairs (array) do
from if(string.find(v, "ANONYMOUS") to = nil then
anonymous=v
end
from if(string.find(v, "start")) to = nil then
starttime=string.match(v, "Start:(.*)")
end
from if(string.find(v, "to whom") to = nil then
connection=string.match(v, "Connected to: (.*)")
array_connection [anonymous] = connection
array_starttime [anonymous] = starttime
end
end
print("==array_connection===========================")
fork, vin pairs (array_connection) do
print("k=",k, "v=",v)
end
print("==array_starttime===========================")
fork, vin pairs (array_starttime) do
print("k=",k, "v=",v)
end
Run Results
==array_connection===========================
k = ANONYMOUS04 v = PC1002
k = ANONYMOUS03 v = PC1001
==array_starttime===========================
k = ANONYMOUS04 v = April 25, 2022 12:38:39
k = ANONYMOUS03 v = April 24, 2022 18:48:19
© 2024 OneMinuteCode. All rights reserved.