使用Golang,如何读取2个字符之间的文件内容

时间:2015-01-13 22:12:31

标签: go

所以我真的想学习go,但它比我想象的要困难得多。我的目标是编写一个编辑dns文件的程序。第一步是打开文件并将其读入内存。好的,用ioutil.Readfile很容易实现。因此,我需要做的下一件事是只阅读SOA或阅读,直到遇到")"。我到底怎么做?这是文件的样子:

example.com.    SOA     dns1.example.com. hostmaster.example.com. (
            2001062501 ; serial
            21600      ; refresh after 6 hours
            3600       ; retry after 1 hour
            604800     ; expire after 1 week
            86400 )    ; minimum TTL of 1 day

理想情况下,程序将从包含" SOA"以")"结束并且还认识到";"。我应该从哪里开始呢?

1 个答案:

答案 0 :(得分:0)

完全控制的一种方法是使用text/scanner 以下是您的案例示例: http://play.golang.org/p/_9LddtB7R9

package main

import (
    "fmt"
    "strings"
)
import "text/scanner"

var dnsRecord = `example.com.    SOA     dns1.example.com. hostmaster.example.com. (
            2001062501 ; serial
            21600      ; refresh after 6 hours
            3600       ; retry after 1 hour
            604800     ; expire after 1 week
            86400 )    ; minimum TTL of 1 day
`

func main() {

    var s scanner.Scanner
    s.Init(strings.NewReader(dnsRecord))
    tok := s.Scan()
    for tok != scanner.EOF {
        // do something with tok
        tok = s.Scan()
        fmt.Println(s.TokenText())
    }

}

否则,您可以使用正则表达式匹配特定行http://golang.org/pkg/regexp/