Julia 如何从文本中提取数据的特定部分(块)

Julia 如何从文本中提取数据的特定部分(块),julia,Julia,我有一个大的文本文件,包括几个数据块,其中的数据块由{}分隔。我需要处理文件中的两部分数据 我试图找到目标数据的标题(例如“作业”),以便在下一个}之前阅读以下行,但第一步失败: open("file.txt","r") do f for j in eachline(f) if "job" in j return true return false end end end 因此,我期待任何帮助。您可以使用以下命令来执行此操作: 塞德 a

我有一个大的文本文件,包括几个数据块,其中的数据块由{}分隔。我需要处理文件中的两部分数据

我试图找到目标数据的标题(例如“作业”),以便在下一个}之前阅读以下行,但第一步失败:

open("file.txt","r") do f
    for j in eachline(f) 
    if "job" in j
        return true
        return false
    end
end
end

因此,我期待任何帮助。

您可以使用以下命令来执行此操作:

塞德 awk
但是最好发送文本以更好地检查它,或者获取此示例。有很多方法可以做到这一点。以下是使用单个循环的一种可能性:

open("file.txt") do f
    job_found = false
    while true
        line = readline(f)
        if job_found
            occursin("}", line) && break
            println(line)
        else
            job_found = occursin("job", line)
        end 
    end
end
此代码将打印
“作业”
字符串包含在
行中之后的所有行,直到
“}”
包含在某些
行中


这就是您想要的吗?

通过使用awk或sed命令及其开关,您可以看到更好的结果,因为我没有您的文本示例可以更好地帮助您

您的评论似乎有一部分遗漏了如果您能提供一个具有预期输出的运行示例,那就太好了,所以答案都集中在这一点上。非常感谢,它起了作用。如果要查找下一个以相同标题“Job”开头的数据块,请将
while true
更改为
while!eof(f)
发生(“}”,第行)和中断;println(行)
占用(“}”,行)?(job_found=false):println(行)
。通过这种方式,您将打印所有重复块的“作业”和“}”之间的所有行。谢谢。这正是我所期望的。