Erlang 解析命令的输出并将其保存到列表中

Erlang 解析命令的输出并将其保存到列表中,erlang,Erlang,我想解析命令的结果并将其保存到列表中: Process Pid Mello No Status 122 523 GFAF_0 1 Running 125 512 GFAF_235 2 Running 128 987 GFAF_1 3 Stopped 预期产出: [GFAF_0,GFAF_235,GFAF_1] 我想用GFAF_XYZ正则表达式,其中XYZ是数字,但我找不到一种方法 问候,, 达米安我觉得你看起来像 您

我想解析命令的结果并将其保存到列表中:

Process Pid Mello       No  Status
122     523 GFAF_0      1   Running
125     512 GFAF_235    2   Running
128     987 GFAF_1      3   Stopped
预期产出:

[GFAF_0,GFAF_235,GFAF_1]
我想用GFAF_XYZ正则表达式,其中XYZ是数字,但我找不到一种方法

问候,,
达米安

我觉得你看起来像

您需要根据输入格式指定选项

OptSpecList =
    [
     {host,    $h,        "host",    {string, "localhost"}, "Database server host"},
     {port,    $p,        "port",    integer,               "Database server port"},
     {dbname,  undefined, "dbname",  {string, "users"},     "Database name"},
     {xml,     $x,        undefined, undefined,             "Output data in XML"},
     {verbose, $v,        "verbose", integer,               "Verbosity level"},
     {file,    undefined, undefined, string,                "Output file"}
    ].
然后调用getopt:parse/2:

你会得到元组

{ok,{[{host,"myhost"},
      {port,1000},
      xml,
      {file,"file.txt"},
      {dbname,"users"},
      {verbose,3}],
     ["dummy1","dummy2"]}}
还是超简单的解决方案

例如,如果您以字符串形式接收数据

"Process Pid Mello No Status 122 523 GFAF_0 1 Running 125 512 GFAF_235 2 Running 128 987 GFAF_1 3 Stopped"
字里行间

L = string:tokens("Process Pid Mello No Status 122 523 GFAF_0 1 Running 125 512 GFAF_235 2 Running 128 987 GFAF_1 3 Stopped", " ").

["Process","Pid","Mello","No","Status","122","523","GFAF_0",
 "1","Running","125","512","GFAF_235","2","Running","128",
 "987","GFAF_1","3","Stopped"]
并检查元素是否包含GFAF_uu前缀

F = fun(Elem, Acc) ->
    case string:find(Elem, "GFAF_", trailing) of
      nomatch -> Acc;
      _ -> [Elem|Acc]
    end end,
  lists:foldl(F, [], L).
您将收到该列表

["GFAF_1","GFAF_235","GFAF_0"]

谢谢,我一直在寻找用文字拆分的解决方案。
["GFAF_1","GFAF_235","GFAF_0"]