如何将go程序在终端中的输出通过管道传输到另一个程序?

时间:2019-05-16 05:05:13

标签: go terminal output io-redirection

我想在go程序产生的输出上运行grep。使用其他语言,我可以轻松做到。例如:java测试| grep world

即使将输出重定向到文件似乎也不起作用,并且创建的文件为空,并且终端仍会打印输出。

package main
func main() {
  println("One")
  println("Hello")
}

预期:

go build test.go
./test | grep 'e'
Hello

实际:

go build test.go
./test | grep 'e'
One
Hello

1 个答案:

答案 0 :(得分:0)

我发现了自己的错误。

从println文档中:

  

println内置函数将其参数格式化为   特定于实现的方式,并将结果写入标准错误。

因此,它不会在stdout上输出。为了打印到标准输出,可以使用fmt.Println代替。