GoLang: find a string in a file and print the whole line

huangapple go评论82阅读模式
英文:

GoLang: find a string in a file and print the whole line

问题

我可以帮你翻译代码部分,以下是翻译好的内容:

我想在一个非常大的文本文件(大约20GB)中查找字符串,并打印整行而不仅仅是字符串。我还想将该行写入一个新的文本文件。

到目前为止,我只能搜索字符串并得到True或False的结果。你能帮帮我吗?我真的很迷茫,不知道该如何完成。

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"strings"
)

func main() {
	var text string
	fmt.Print("输入字符串: ")
	fmt.Scanln(&text)

	b, err := os.Open("output.txt")
	content, err := ioutil.ReadAll(b)

	if err != nil {
		panic(err)
	}
	s := string(content)

	fmt.Println(strings.Contains(s, text))

	// 1. 如何搜索字符串并打印整行?
	// 2. 如何将该行写入新的文本文件?

}

希望对你有帮助!

英文:

I would like to find string in a very big txt file (app. 20GB), and print the whole line and not just a string. I would also like to write that line in a new txt file.

Till now I only can search for a string and get True or False result. Can you please help me, I am really lost and do not know how to finalize it.

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"strings"
)

func main() {
	var text string
	fmt.Print("Enter string: ")
	fmt.Scanln(&text)

	b, err := os.Open("output.txt")
	content, err := ioutil.ReadAll(b)

	if err != nil {
		panic(err)
	}
	s := string(content)

	fmt.Println(strings.Contains(s, text))

    // 1. how to search for string and print whole line?
    // 2. how to write that line in new txt file?

}

TIA

答案1

得分: 1

1. 如何搜索字符串并打印整行?

答案:

package main

import (
	"fmt"
	"strings"
)

const output = `Orang yang baru saja memulai atau sudah dalam perjalanan belajar coding pasti sudah tidak asing lagi dengan kata “Stack Overflow”. Dalam website resminya, Stack Overflow digambarkan sebagai “platform publik yang membangun kumpulan pertanyaan dan jawaban coding yang terpercaya.” Platform ini pertama kali dibuat pada tahun 2008 dan seketika mengalahkan popularitas Experts Exchange, sebagai platform tanya-jawab teknologi nomor satu pada saat itu.

Stack Overflow sering diibaratkan sebagai ‘sahabat’ programmer zaman now. Tidak peduli jenis pekerjaan atau lama karir yang dimiliki, seorang programmer pasti pernah membuka situs Stack Overflow untuk mencari jawaban penyelesaian masalah coding yang mereka hadapi. Pertanyaan yang sudah ditandai dengan jenis bahasa pemrogramannya dimaksudkan untuk memudahkan user untuk mencari informasi terkait.

Bagi programmer muda yang belum pernah menggunakan platform ini, berikut adalah beberapa hal yang perlu kamu ketahui sebelum masuk ke komunitas Stack Overflow.
`

func main() {
	idxFind := strings.Index(output, "programmer zaman now")
	left := strings.LastIndex(output[:idxFind], "\n")
	right := strings.Index(output[idxFind:], "\n")

	fmt.Println(output[left : idxFind+right])
}

playground

2. 如何将该行写入新的文本文件中?

你可以使用 os 标准库
https://pkg.go.dev/os#Create

英文:

1. how to search for string and print whole line?

answer :

package main

import (
	"fmt"
	"strings"
)

const output = `Orang yang baru saja memulai atau sudah dalam perjalanan belajar coding pasti sudah tidak asing lagi dengan kata “Stack Overflow”. Dalam website resminya, Stack Overflow digambarkan sebagai “platform publik yang membangun kumpulan pertanyaan dan jawaban coding yang terpercaya.” Platform ini pertama kali dibuat pada tahun 2008 dan seketika mengalahkan popularitas Experts Exchange, sebagai platform tanya-jawab teknologi nomor satu pada saat itu.

Stack Overflow sering diibaratkan sebagai ‘sahabat’ programmer zaman now. Tidak peduli jenis pekerjaan atau lama karir yang dimiliki, seorang programmer pasti pernah membuka situs Stack Overflow untuk mencari jawaban penyelesaian masalah coding yang mereka hadapi. Pertanyaan yang sudah ditandai dengan jenis bahasa pemrogramannya dimaksudkan untuk memudahkan user untuk mencari informasi terkait.

Bagi programmer muda yang belum pernah menggunakan platform ini, berikut adalah beberapa hal yang perlu kamu ketahui sebelum masuk ke komunitas Stack Overflow.
`

func main() {
	idxFind := strings.Index(output, "programmer zaman now")
	left := strings.LastIndex(output[:idxFind], "\n")
	right := strings.Index(output[idxFind:], "\n")

	fmt.Println(output[left : idxFind+right])
}

playground

2. how to write that line in new txt file?

You can use os stdlib
https://pkg.go.dev/os#Create

huangapple
  • 本文由 发表于 2022年3月18日 05:37:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/71519319.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定