You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-grep/main.go

52 lines
780 B

package main
import (
"fmt"
"io/ioutil"
"os"
"strings"
"github.com/fatih/color"
)
func check(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}
}
func usage() {
fmt.Printf("Usage:\n\t %s [text] [file]", os.Args[0])
}
func main() {
found := color.New(color.FgRed).PrintfFunc()
if len(os.Args) <= 2 || len(os.Args) > 3 {
usage() //print usage and then exit
os.Exit(1)
}
search := os.Args[1]
filename := os.Args[2]
bytes, err := ioutil.ReadFile(filename)
check(err)
word := ""
line := ""
for i := 0; i < len(bytes); i++ {
word += string(bytes[i])
if string(bytes[i]) == "\n" {
line = word
if strings.Contains(line, search) {
found("%s", word)
}
line = ""
word = "" //reset line and word
}
}
}