package main
import (
"fmt"
"bufio"
"os"
)
func main() {
counts := make(map[string]int)
files :=os.Args[1:] // 接收命令上上的参数
fmt.Println(len(files))
if (len(files)) == 0 {
countLine(os.Stdin,counts)
} else {
for _,arg :=range files {
f,err :=os.Open(arg) //打开文件
if err != nil {
fmt.Fprintf(os.Stderr,"dup2:%v\n",err)
continue
}
countLine(f,counts)
f.Close()
}
for line,n := range counts {
if n>1 {
fmt.Printf("%d\t%s\n",n,line)
}
}
}
}
func countLine(f *os.File,counts map[string]int) {
input := bufio.NewScanner(f)
for input.Scan() {
if input.Text() == "stop" {break}
counts[input.Text()]++
}
for line, n := range counts {
if n > 1 {
fmt.Printf("%d\t%s\n", n, line)
}
}
}
创建 1.txt 2.txt
然后在 txt 文件中,输入字符串,得换行
windows 环境输入 go run ./main.go 1.txt 2.txt
有疑问加站长微信联系(非本文作者)