英文:
How to read and get the complete text line from compressed file using golang
问题
有一个压缩的文本文件(.gz),其中包含一些警告、错误和信息的详细内容。
示例内容:
Oct 25 06:58:51 : 有关信息,请访问https://www.det.org
Oct 25 06:58:51 : 版权所有 2004-2018 年互联网系统联盟。
Oct 25 06:58:51 : 保留所有权利。
Oct 25 06:58:51 : 错误:主机声明是全局的。
Oct 25 06:58:51 : 警告:主机声明是全局的
我需要从文本文件中获取警告和错误的完整行,而不使用golang解压缩。如何开发一个算法来实现这个?
英文:
There is a compressed text file(.gz) has some set of warning, error and information details.
Sample content.
Oct 25 06:58:51 : For info, please visit https://www.det.org
Oct 25 06:58:51 : Copyright 2004-2018 Internet Systems Consortium.
Oct 25 06:58:51 : All rights reserved.
Oct 25 06:58:51 : ERROR: Host declarations are global.
Oct 25 06:58:51 : WARNING: Host declarations are global
I need to get the warning and error complete line from the text file without uncompressed using golang. How can develop an algorithm for this?
答案1
得分: 1
这是我解决上述问题的答案。
cmd := exec.Command(`zgrep`, `WARNING\|ERROR`, filename)
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
if err := cmd.Start(); err != nil {
log.Fatal(err)
}
data, err := ioutil.ReadAll(stdout)
if err != nil {
log.Fatal(err)
}
if err := cmd.Wait(); err != nil {
log.Fatalf("cmd.Wait: %v", err)
}
lines := strings.Split(string(data), "\n")
for _, line := range lines {
fmt.Println(line)
}
英文:
Here is the answer I solved above question.
cmd := exec.Command(`zgrep`, `WARNING\|ERROR`, filename)
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
if err := cmd.Start(); err != nil {
log.Fatal(err)
}
data, err := ioutil.ReadAll(stdout)
if err != nil {
log.Fatal(err)
}
if err := cmd.Wait(); err != nil {
log.Fatalf("cmd.Wait: %v", err)
}
lines := strings.Split(string(data), "\n")
for _, line := range lines {
fmt.Println(line)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论