如何在Julia中解析外部命令的输出?

时间:2015-06-16 19:42:39

标签: parsing julia

让我们说我有一个名为" Busca01.x"的外部命令。它返回由制表符分隔的三个整数,如下所示:

karel@maquina: Busca01.x
192    891   9029

所以,我可以从julia中调用它,并使用其中任何一个将结果存储为字符串 readallreadchomp。我需要数据作为数组或元组,但我似乎不能使它工作,尽管数据的结构明显。我认为在readdlm可能是答案,但我似乎无法使其发挥作用。

我的朱莉娅是3.7.pre 22.

1 个答案:

答案 0 :(得分:4)

由于 readall 会返回字符串,您需要在字符串上运行的内容,拆分符合法案。

Base.split(string,[chars]; limit = 0,keep = true)

  

通过拆分给定的字符串返回一个子字符串数组      给定字符分隔符的出现,可能是      以"搜索"第二个允许的任何格式指定      参数(即单个字符,字符集合,      字符串或正则表达式)。如果" chars"它被省略了      默认为所有空格字符的集合,"保持"被采取      是假的。两个关键字参数是可选的:它们是a      结果的最大大小和确定是否为空的标志      字段应保留在结果中。

所以给出类似

之类的输出
julia> x = readall(pipe(`echo "A B C"`,`awk -F ' ' '{print $1"\t"$2"\t"$3 }'`))
"A\tB\tC\n"

字段是

julia> split(x)
3-element Array{SubString{ASCIIString},1}:
 "A"
 "B"
 "C"

或将其变成元组

julia> tuple(split(x)...)
("A","B","C")