行过滤器是一种常见的程序类型,它从标准输入(stdin)读取数据,进行处理,然后将一些派生结果打印到标准输出(stdout)。grep 和 sed 是常见的行过滤器。
以下是一个用 Go 编写的行过滤器示例,它将所有输入文本转换为大写形式。你可以使用这个模式来编写自己的 Go 行过滤器。
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
// 将未缓冲的 os.Stdin 包装在一个带缓冲的扫描器中,为我们提供了一个方便的 Scan 方法,该方法会将扫描器推进到下一个标记;在默认的扫描器中,下一个标记就是下一行。
scanner := bufio.NewScanner(os.Stdin)
// Text 方法会返回当前的标记,在这里也就是输入中的下一行内容。
for scanner.Scan() {
ucl := strings.ToUpper(scanner.Text())
// 将大写的行内容输出。
fmt.Println(ucl)
}
// 在 Scan 过程中检查错误。文件末尾是预期的情况,不会被 Scan 当作错误报告。
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}运行结果:
➜ go run line-filters/line-filters.go
aaaa
AAAA
aaaaaaa
AAAAAAA
aaaaaaaaaaaaaaa
AAAAAAAAAAAAAAA
ww
WW
acc
ACC
echo
ECHO原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。