annotate src/uq.go @ 17:72ce457fb99d

ut: bug fix.
author pyon@macmini
date Wed, 20 Jun 2018 06:01:58 +0900
parents de451fa0c9cd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
1 package main
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
2
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
3 import (
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
4 "bufio"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
5 "flag"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
6 "fmt"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
7 "os"
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
8 )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
9
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
10 func main() {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
11 var c = flag.Bool( "c", false, "count each items" )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
12 var l = flag.Bool( "l", false, "count items")
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
13 flag.Parse()
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
14
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
15 files := flag.Args()
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
16
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
17 count := make( map[string] int )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
18 var lines []string
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
19
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
20 // Input
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
21 if len( files ) == 0 {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
22 input := bufio.NewScanner( os.Stdin )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
23 for input.Scan() {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
24 count[input.Text()]++
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
25 lines = append( lines, input.Text() )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
26 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
27 } else {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
28 for _, arg := range files {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
29 f, err := os.Open( arg )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
30 if err != nil {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
31 fmt.Fprintf( os.Stderr, "uq : %v\n", err )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
32 continue
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
33 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
34 input := bufio.NewScanner( f )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
35 for input.Scan() {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
36 count[input.Text()]++
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
37 lines = append( lines, input.Text() )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
38 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
39 f.Close()
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
40 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
41 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
42
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
43 // Output
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
44 if *l {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
45 fmt.Println( len(lines), "->", len(count) )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
46 return
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
47 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
48
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
49 done := make( map[string] int )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
50 for _, line := range lines {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
51 if done[line] == 0 {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
52 if *c {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
53 fmt.Printf( "%s,\t%d\n", line, count[line] )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
54 } else {
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
55 fmt.Println( line )
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
56 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
57 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
58 done[line]++
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
59 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
60 }
de451fa0c9cd golang repository.
pyon@macmini
parents:
diff changeset
61