mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:55:28 +08:00
44 lines
729 B
Go
Executable File
44 lines
729 B
Go
Executable File
package main
|
|
|
|
import (
|
|
"os"
|
|
"io"
|
|
"fmt"
|
|
"bufio"
|
|
"flag"
|
|
)
|
|
|
|
var numberFlag = flag.Bool("n", false, "number each line")
|
|
|
|
func cat(r *bufio.Reader) {
|
|
i := 1
|
|
for {
|
|
buf, err := r.ReadBytes('\n')
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if *numberFlag {
|
|
fmt.Fprintf(os.Stdout, "%5d %s", i, buf)
|
|
i++
|
|
} else {
|
|
fmt.Fprintf(os.Stdout, "%s", buf)
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
if flag.NArg() == 0 {
|
|
cat(bufio.NewReader(os.Stdin))
|
|
}
|
|
for i := 0; i < flag.NArg(); i++ {
|
|
f, err := os.Open(flag.Arg(i))
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "%s:error reading from %s: %s\n", os.Args[0], flag.Arg(i), err.Error())
|
|
continue
|
|
}
|
|
cat(bufio.NewReader(f))
|
|
}
|
|
}
|