

Yamahaルーターのluaスクリプトを作成しておりますが、文字列操作で困っております。  
配列の内容を下記のように編集するスクリプトをご教示いただけないでしょうか。

**・元データ**

[code]

    {ANONYMOUS03, L2TPセッションは継っていません, 開始: 2022/04/24 18:48:19, 接続相手: PC1001
    ,ANONYMOUS04, L2TPセッションは継っていません, 開始: 2022/04/25 12:38:39, 接続相手: PC1002}
    
[/code]

**・加工したい形**

[code]

    {ANONYMOUS03 = "PC1001", ANONYMOUS04 = "PC1002"}
    {ANONYMOUS03 = "2022/04/24 18:48:19", ANONYMOUS04 = "2022/04/25 12:38:39"}
    
[/code]

◆説明  
元データからANONYMOUS番号と接続相手名の配列、ANONYMOUS番号と開始時間の配列を作りたいです。

◆試したコード  
まずは、それぞれの配列について不要な要素を削除するため、下記のようなコードを書いてみましたが、臨んだ結果にはなりませんでした。

[code]

    -- 不必要な要素を削除
    for k, v in pairs(array) do
      if (string.find(v, "ANONYMOUS") or string.find(v, "接続相手")) == nil then
        table.remove(array, k)
      end
    end
    
[/code]

・上記のprint結果  
1 ANONYMOUS03  
2 直前のL2TPセッションの状態:  
3 接続相手: PC1001  
4 ANONYMOUS04  
5 直前のL2TPセッションの状態:  
6 接続相手: PC1002


CC BY-SA 4.0
2022-05-08T12:09:19.510
88707
2022-05-11T13:59:17.637
51153
question
lua
luaの文字列を例のように変換したい


不要なものを削除するのではなく、必要なものを抜き出して新たなテーブルを作るスクリプト例です。  
結果はarray_connectionとarray_starttimeに設定しています。

[code]

    local array = {
    "ANONYMOUS03", "L2TPセッションは継っていません", "開始: 2022/04/24 18:48:19", "接続相手: PC1001",
    "ANONYMOUS04", "L2TPセッションは継っていません", "開始: 2022/04/25 12:38:39", "接続相手: PC1002"
    }
    array_connection = {}
    array_starttime = {}
    for k, v in pairs(array) do
            if (string.find(v, "ANONYMOUS")) ~= nil then
                    anonymous = v
            end
            if (string.find(v, "開始")) ~= nil then
                    starttime = string.match(v, "開始: (.*)")
            end
            if (string.find(v, "接続相手")) ~= nil then
                    connection = string.match(v, "接続相手: (.*)")
                    array_connection[anonymous] = connection
                    array_starttime[anonymous] = starttime
            end
    end
    print("==array_connection===========================")
    for k, v in pairs(array_connection) do
            print("k=", k, "v=",v)
    end
    print("==array_starttime===========================")
    for k, v in pairs(array_starttime) do
            print("k=", k, "v=",v)
    end
    
[/code]

実行結果

[code]

    ==array_connection===========================
    k=      ANONYMOUS04     v=      PC1002
    k=      ANONYMOUS03     v=      PC1001
    ==array_starttime===========================
    k=      ANONYMOUS04     v=      2022/04/25 12:38:39
    k=      ANONYMOUS03     v=      2022/04/24 18:48:19
    
[/code]


CC BY-SA 4.0
2022-05-11T13:13:43.823
88766
2022-05-11T13:59:17.637
2022-05-11T13:59:17.637
35558
35558
88707
answer