uniq working

master
Zed A. Shaw 1 week ago
parent be54bf3e7d
commit 55fc99e01f
  1. 2
      uniq/.gitignore
  2. 4
      uniq/Makefile
  3. 3
      uniq/go.mod
  4. 57
      uniq/main.go
  5. 31
      uniq/test.txt

2
uniq/.gitignore vendored

@ -0,0 +1,2 @@
uniq
uniq.exe

@ -0,0 +1,4 @@
build:
go build .

@ -0,0 +1,3 @@
module lcthw.dev/go/go-coreutils/uniq
go 1.25.3

@ -0,0 +1,57 @@
package main
import (
"fmt"
"os"
"bufio"
"strings"
"flag"
)
type Opts struct {
IgnoreCase bool
Count bool
}
func parse_opts() Opts {
var opts Opts
flag.BoolVar(&opts.IgnoreCase, "i", false, "ignore case")
flag.BoolVar(&opts.Count, "c", false, "count occurence")
flag.Parse()
return opts
}
func string_equal(a string, b string, ignore_case bool) bool {
if ignore_case {
a = strings.ToLower(a)
b = strings.ToLower(b)
}
return strings.Compare(a, b) == 0
}
func main() {
scan := bufio.NewScanner(os.Stdin)
seen_line := ""
seen_count := 0
opts := parse_opts()
for scan.Scan() {
line := scan.Text()
if !string_equal(line, seen_line, opts.IgnoreCase) {
if opts.Count {
fmt.Print(seen_count, " ")
}
fmt.Println(line)
seen_line = line
seen_count = 0
} else {
seen_count++
}
}
}

@ -0,0 +1,31 @@
head
numfmt
od
sha512sum
sort
starter
starter
starter
LICENSE
license
LICENSE
outline.txt
README.md
stat
tail
tail
tail
tail
tr
uniq
uniq
uniq
uniq
cat
cat
cat
cat
date
du
wc
.gitignore
Loading…
Cancel
Save