2014-09-02 6 views
4

Мне в основном нужно прочитать определенный ряд строк в файле, а если строка сопоставляется с индексной строкой (скажем, «Hello World!», Например) return true, но я не уверен, как это сделать. Я знаю, как читать отдельные строки и целые файлы, но не диапазоны строк. Есть ли там библиотеки, которые могут помочь, или есть простой скрипт для этого? Любая помощь очень ценится!Перейти: Чтение определенного диапазона строк в файле

ответ

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

0

Если вы используете for перебирать ломтиком линий, вы могли бы использовать что-то вдоль линий

for _,line := range file[2:40] { 
    // do stuff 
} 
Смежные вопросы