2014-09-02 52 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 
}