gpt4 book ai didi

shell - 使用 golang 过滤终端输出的输出

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:29 26 4
gpt4 key购买 nike

简单执行 go 命令会给出一些输出,如下所示:How do you get the output of a system command in Go? ?但是我使用的代码是用于显示输出的进度:https://blog.kowalczyk.info/article/wOYk/advanced-command-execution-in-go-with-osexec.html ?现在,我实际上无法过滤从中获得的输出,因为我不想打印所有内容,只希望打印其中的一部分。有办法吗?

我已经尝试实现一个字符串来获取输出而不是常规方式。但它没有用。我也想要进步。

最佳答案

您指向的示例从子进程的标准输出中读取,并且对于每次读取,它将读取的内容写入自己的标准输出,同时还捕获它:

func copyAndCapture(w io.Writer, r io.Reader) ([]byte, error) {
var out []byte
buf := make([]byte, 1024, 1024)
for {
n, err := r.Read(buf[:])
if n > 0 {
d := buf[:n]
out = append(out, d...)
_, err := w.Write(d)
if err != nil {
return out, err
}
}
if err != nil {
// Read returns io.EOF at the end of file, which is not an error for us
if err == io.EOF {
err = nil
}
return out, err
}
}
}

此函数以 os.Stdout 作为 w 调用。

现在,您可以在使用 w.Write 打印数据之前自由过滤数据 d

关于shell - 使用 golang 过滤终端输出的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54570268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com