作为更大程序的一部分,我正在调用 grep,并将其结果输出到标准输出:
// execute grep command
cmd := exec.Command(GREP_BIN_PATH, argArray...)
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
stderr, err := cmd.StderrPipe()
if err != nil {
log.Fatal(err)
}
err = cmd.Start()
if err != nil {
log.Fatal(err)
}
go io.Copy(os.Stdout, stdout)
go io.Copy(os.Stderr, stderr)
cmd.Wait()
如果我直接从终端对 grep 进行相同的调用,grep 将输出多色文本(例如,在其输出中以红色突出显示任何匹配项)。做一些研究,似乎grep/其他程序使用特殊的ansi颜色代码来更改颜色突出显示。
当我从 go 执行命令时,这些颜色去哪里了?有什么方法可以让我在 go 中执行以保留 ansi 颜色代码,并将输出从 grep 复制到标准输出(类似于此处的帖子,但对于 go)?
(我也知道我可以手动重新插入颜色代码。但这看起来很痛苦,我宁愿只是管道 grep 的原始颜色。)
如果问题中的某些内容不清楚/需要澄清,请告诉我。谢谢!
浮云间
相关分类