read, err := ioutil.ReadFile(path)
if err != nil {
return err
}
if strings.Contains(string(read), "STRING") {
// display line number?
// what if many occurrences of the string
// how to display for each the line number?
}
我正在尝试在文件中搜索特定的字符串,并显示该字符串所在的行号。
使用扫描器逐行遍历文件,增加每个循环的行数。
例如
f, err := os.Open(path)
if err != nil {
return 0, err
}
defer f.Close()
// Splits on newlines by default.
scanner := bufio.NewScanner(f)
line := 1
// https://golang.org/pkg/bufio/#Scanner.Scan
for scanner.Scan() {
if strings.Contains(scanner.Text(), "yourstring") {
return line, nil
}
line++
}
if err := scanner.Err(); err != nil {
// Handle the error
}
更新:如果您需要跨“数千个文件”执行此操作(根据对另一个答案的评论),则可以将此方法包装在工作程序池中并同时运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句