対象のテキスト ファイルの 4 つのサンプル行を次に示します。
EnumerateKey,explorer.exe,HKCR\\Directory\\shellex\\ContextMenuHandlers,NOMORE
CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS
QueryKey,AcroRd32.exe,HKCU\\Control Panel\\International,BUFOVRFLOW
QueryValue,AcroRd32.exe,HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoRecentDocsHistory,NOTFOUND
K=3
$3 で見つかったが、\\
4行の目的の出力は次のとおりです。
EnumerateKey,explorer.exe,HKCR\\Directory\\shellex\\ContextMenuHandlers,NOMORE, Directory, shellex, ContextMenuHandlers
CreateSec,explorer.exe,\\WINDOWS\\system32\\verclsid.exe,SUCCESS, WINDOWS, system32, verclsid.exe
QueryKey,AcroRd32.exe,HKCU\\Control Panel\\International,BUFOVRFLOW, Control Panel, International,
QueryValue,AcroRd32.exe,HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoRecentDocsHistory,NOTFOUND, Software, Microsoft, Windows
さらに調査した結果、次の 2 つのニュアンスがあります。
HK** で始まるパスもあれば、そうでないパスもあります。ただし、どちらの場合も、最初の の後に始まるパスのみを気にします\\
。\\
この違いは、行 1 と行 2 の間でキャプチャされます。したがって、可能であれば、解析は単純に $3 ではなく固定する必要があると思います。(その用語を正しく使用していますか?)
第二に、パスの深さが異なります。列/フィールドの一貫性を保つために、これを維持するために、一部の情報を失い (4 行目)、短いパス用に空のフィールドを用意します (3 行目)。