lesson1 输出出现重复行的文件名称
1. 代码
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
type counts map[string]int
var (
c = make(counts)
fileName string
)
for _, filename := range os.Args[1:] {
f, err := os.Open(filename)
if err != nil {
fmt.Println(err.Error())
return
}
defer func(f *os.File) {
err := f.Close()
if err != nil {
return
}
}(f)
bufRead := bufio.NewReader(f)
for {
line, err := bufRead.ReadString('\n')
if err != nil {
if err != io.EOF {
fmt.Println("Error read file list:", err)
return
}
if err == io.EOF {
break
}
}
c[line]++
if c[line] > 1 {
fileName = f.Name()
}
}
}
for line, n := range c {
if n > 1 {
fmt.Printf("%s\t%d\t%s\r", fileName, n, line)
}
}
}