为了账号安全,请及时绑定邮箱和手机立即绑定

从大文件中删除特定行的最快方法是什么?

从大文件中删除特定行的最快方法是什么?

Go
慕盖茨4494581 2022-05-18 09:40:30
从文件中删除一行(包含特定子字符串)的最佳方法是什么?我试图将整个文件加载到一个切片中,修改该切片,然后将该切片打印到一个文件中,效果很好,但是当我想对大文件(例如 50GB+)执行此操作时,这是行不通的,因为我没有没有那么多记忆。我认为这对于流是可能的,但我没有弄清楚如何同时读取和写入(因为我必须通过子字符串搜索该行然后将其删除)。这甚至可能吗,还是我必须阅读整个文件并保护索引?如果是这样,最好的方法是什么?
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

这从标准输入读取并写入标准输出。请注意,我从第二个答案中的代码在go 中逐行读取文件时对其进行了改编(未测试)。


scanner := bufio.NewScanner(os.Stdin)

for scanner.Scan() {

    line := scanner.Text()

    if line != "unwanted" {

        fmt.Println(line)

    }

}

if err := scanner.Err(); err != nil {

    log.Fatal(err)

}


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信