1

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 Answers1

1

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

Rahmat Fathoni
  • 1,272
  • 1
  • 2
  • 8