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

标签 file go range line

我主要需要读取文件中特定范围的行,如果字符串与索引字符串匹配(例如“Hello World!”),则返回 true,但我不确定该怎么做所以。我知道如何读取单行和整个文件,但不知道行的范围。是否有任何可以提供帮助的库,或者有一个简单的脚本来完成它?非常感谢任何帮助!

最佳答案

是这样的吗?

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

关于file - Go:读取文件中特定范围的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614176/

相关文章:

C 文件 I/O 问题

c - 有没有一种方法可以快速确定从(稀疏)文件中读取的 block 是否全为零?

java - 为什么 Range 会抛出 UnsupportedOperationException?

sql - 将范围列表展平为单个结果范围集

unix - 在shell脚本中确定文件的年龄

c - 如何稳健地写入缓慢且不可靠的 NFS

go - 跨文件使用环境变量 - GOPATH

go - 如何在不使用尾部指针的情况下实现双向链表

mongodb - 禁用 Go mongo bson map 中的某些字段

实体列表的 HTTP 范围 header