2014-09-02 54 views
4

我主要需要讀取文件中特定行的範圍,並且如果字符串與索引字符串匹配(例如,說「Hello World!」)是的,但我不知道如何去做。我知道如何閱讀個人行和整個文件,但不知道行的範圍。有沒有可以提供幫助的圖書館,還是有一個簡單的腳本來完成它?任何幫助是極大的讚賞!前往:讀取文件中特定範圍的行

回答

8

是這樣的?

package main 

import (
    "bufio" 
    "bytes" 
    "fmt" 
    "os" 
) 

func Find(fname string, from, to int, needle []byte) (bool, error) { 
    f, err := os.Open(fname) 
    if err != nil { 
     return false, err 
    } 
    defer f.Close() 
    n := 0 
    scanner := bufio.NewScanner(f) 
    for scanner.Scan() { 
     n++ 
     if n < from { 
      continue 
     } 
     if n > to { 
      break 
     } 
     if bytes.Index(scanner.Bytes(), needle) >= 0 { 
      return true, nil 
     } 
    } 
    return false, scanner.Err() 
} 

func main() { 
    found, err := Find("test.file", 18, 27, []byte("Hello World")) 
    fmt.Println(found, err) 
} 
+0

正是東西!非常感謝你! – T145 2014-09-02 18:14:34

0

如果您使用for通過線片進行迭代,你可以使用沿線的

for _,line := range file[2:40] { 
    // do stuff 
}