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

5

我主要需要读取文件中特定范围的行,如果匹配到索引字符串(比如说"Hello World!"),则返回true。但我不确定该如何做到这一点。我知道如何读取单个行和整个文件,但不知道如何读取行的范围。是否有任何库可以帮助实现?或者有没有简单的脚本可以完成?非常感谢您的帮助!

2个回答

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)
}

没错!非常感谢你! - T145

-1
如果您正在使用for来迭代一系列行,您可以使用类似以下的内容:
for _,line := range file[2:40] {
    // do stuff
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接