package main import ( "time" "os" "bufio" "strconv" "log" "bytes" ) var totalSize float64 func trace(msg string) func(){ start := time.Now() log.Printf("%s", msg) return func() { elapse := time.Since(start) log.Printf("exit %s (%s) %.2fMB/s", msg, elapse, totalSize / elapse.Seconds()) } } func CheckFileContainsStr(path,str string) { cmp:=[]byte(str) log.Println(cmp) defer trace("file parser using golang")() f, err := os.Open(path) if err != nil { log.Printf("open file failed, %s", err) } defer f.Close() input := bufio.NewScanner(f) for input.Scan() { //log.Println(input.Bytes()) info:=input.Bytes() if bytes.Contains(info,cmp){ log.Println(info) } tokens := bytes.SplitN(input.Bytes(), []byte(" "), 10) //log.Println(tokens) totalSize += float64(len(input.Bytes())) if len(tokens) < 9 { continue } strconv.ParseInt(string(tokens[8]), 10, 0) } totalSize = totalSize / (1 << 20) } func main(){ CheckFileContainsStr("~/Downloads/manager.jsp","JspSpyPwd") }