Go by Example: Line Filters

Một line filter (bộ lọc dòng) là chương trình phổ biến đọc đầu vào từ stdin, xử lí và đưa ra kết quả được dẫn xuất trên stdout. grep and sed là các line filter phổ biến

Dưới đây là một ví dụ line filter trong Go để viết một một phiên bản viết hoa của toàn bộ văn bản đầu vào. Bạn có thể sử dụng mô hình này để viết các line filter Go của riêng bạn.

package main
import (
    "bufio"
    "fmt"
    "os"
    "strings"
)
func main() {

Bao bọc os.Stdin không bộ đệm với một scanner (bộ quét) có bộ đệm đem lại cho chúng ta một phương thức quét thuận tiện mà tiến hành scanner đến thông tin tiếp theo; mặc định là dòng tiếp theo trong scanner.

    scanner := bufio.NewScanner(os.Stdin)

Text trả về thông tin hiện tại, ở đây là dòng dòng tiếp theo, từ đầu vào.

    for scanner.Scan() {
        ucl := strings.ToUpper(scanner.Text())

Ghi ra dòng chữ viết hoa.

        fmt.Println(ucl)
    }

Kiểm tra lối trong quá trình Scan (quét). Kết thúc tập tin được mong đợi và không được báo lõi bởi Scan.

    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "error:", err)
        os.Exit(1)
    }
}

Để thử line filter chúng ta, trước tiên hãy tạo một tập tin với vài dòng chữ thường.

$ echo 'hello'   > /tmp/lines
$ echo 'filter' >> /tmp/lines

Sau đó sử dụng line filter để lấy các dòng chữ in hoa.

$ cat /tmp/lines | go run line-filters.go
HELLO
FILTER

Ví dụ tiếp theo: File Paths.