How to read and get the complete text line from compressed file using golang

huangapple go评论82阅读模式
英文:

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)
	
}

huangapple
  • 本文由 发表于 2022年1月19日 01:36:12
  • 转载请务必保留本文链接:https://go.coder-hub.com/70759993.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定