메뉴

문서정보

예제로 살펴보는 Go : Line Filters

라인 필터(Line Filters)는 표준입력 혹은 파일로 부터 읽은 데이터를 변형해서 출력하기 위해서 사용한다. grep이나 sed 같은 프로그램들이 전형적인 라인필터 프로그램이다. grep 같은 경우 데이터를 줄 단위로 읽어서 일치하는 문자열이 있으면 출력하고, sed는 문자열을 치환하거나 삭제하는 등의 일을 한다.

package

import(
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    
    for scanner.Scan() {
        ucl := strings.ToUpper(scanner.Text())
        fmt.Println(ucl)
    }
    
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "error:", err)
        os.Exit(1)
    }
}
	
		

bufio.NewScanner를 이용해서 표준입력(os.Stdin)을 스캔하도록 했다. Scan관련 메서드는 입력 문자열의 다음 토큰을 찾는 일을 한다. 기본 토큰은 개행문자("\n")다. for 문으로 Scan 을 호출하면, 줄단위로 문자열을 읽는다. 그리고 ToUpper 메서드를 이용해서 대문자로 변경 한 다음 출력한다.

이 코드는 아래와 같이 테스트 할 수 있다.
$ echo 'hello' > /tmp/lines
$ echo 'filter' >> /tmp/lines

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

다음 예제 : Command line Arguments