Go:读取文件中特定范围的行

T14*_*145 4 file range line go

我主要需要读取文件中特定范围的行,如果字符串与索引字符串匹配(例如"Hello World!"),则返回true,但我不知道该怎么做.我知道如何读取单个行和整个文件,但不读取行的范围.那里有没有可以提供帮助的图书馆,或者有一个简单的脚本可以做到吗?任何帮助是极大的赞赏!

pet*_*rSO 8

像这样的东西?

package main

import (
    "bufio"
    "bytes"
    "fmt"
    "os"
)

func Find(fname string, from, to int, needle []byte) (bool, error) {
    f, err := os.Open(fname)
    if err != nil {
        return false, err
    }
    defer f.Close()
    n := 0
    scanner := bufio.NewScanner(f)
    for scanner.Scan() {
        n++
        if n < from {
            continue
        }
        if n > to {
            break
        }
        if bytes.Index(scanner.Bytes(), needle) >= 0 {
            return true, nil
        }
    }
    return false, scanner.Err()
}

func main() {
    found, err := Find("test.file", 18, 27, []byte("Hello World"))
    fmt.Println(found, err)
}
Run Code Online (Sandbox Code Playgroud)