猿问

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

从文件中删除一行(包含特定子字符串)的最佳方法是什么?

我试图将整个文件加载到一个切片中,修改该切片,然后将该切片打印到一个文件中,效果很好,但是当我想对大文件(例如 50GB+)执行此操作时,这是行不通的,因为我没有没有那么多记忆。

我认为这对于流是可能的,但我没有弄清楚如何同时读取和写入(因为我必须通过子字符串搜索该行然后将其删除)。这甚至可能吗,还是我必须阅读整个文件并保护索引?如果是这样,最好的方法是什么?


慕盖茨4494581
浏览 155回答 1
1回答

慕勒3428872

这从标准输入读取并写入标准输出。请注意,我从第二个答案中的代码在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)}
随时随地看视频慕课网APP

相关分类

Go
我要回答