Messing around with I/O streams and regexes
This commit is contained in:
parent
1ab8d7d42c
commit
d0fbe716d9
@ -4,6 +4,10 @@ PACKAGES := $(foreach pkg,\
|
||||
$(shell ls src/meatballhat.com/gotour-artifacts),\
|
||||
$(patsubst %,meatballhat.com/gotour-artifacts/%,$(pkg))\
|
||||
)
|
||||
PACKAGES += $(foreach pkg,\
|
||||
$(shell ls src/meatballhat.com/junkdrawer),\
|
||||
$(patsubst %,meatballhat.com/junkdrawer/%,$(pkg))\
|
||||
)
|
||||
PACKAGES += meatballhat.com/amqpfun-runner
|
||||
|
||||
test: build
|
||||
|
51
gotime/src/meatballhat.com/junkdrawer/greppish/main.go
Normal file
51
gotime/src/meatballhat.com/junkdrawer/greppish/main.go
Normal file
@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
const USAGE = `Usage: greppish <regex> [filename]
|
||||
|
||||
Prints lines matching <regex> in [filename] or standard input.`
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
fmt.Println(USAGE)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
regMatch, err := regexp.Compile(os.Args[1])
|
||||
if err != nil {
|
||||
log.Fatal("Problem compiling regex: ", err)
|
||||
}
|
||||
|
||||
inbuf := bufio.NewReader(os.Stdin)
|
||||
|
||||
if len(os.Args) > 2 {
|
||||
infile, err := os.Open(os.Args[2])
|
||||
if err != nil {
|
||||
log.Fatal("Problem opening input file: ", err)
|
||||
}
|
||||
inbuf = bufio.NewReader(infile)
|
||||
}
|
||||
|
||||
var line string
|
||||
|
||||
for {
|
||||
line, err = inbuf.ReadString('\n')
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
os.Exit(0)
|
||||
}
|
||||
log.Fatal("Problem reading input: ", err)
|
||||
}
|
||||
if regMatch.MatchString(line) {
|
||||
fmt.Printf(line)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user