Поиск `/ etc / environment` в Go - PullRequest
       19

Поиск `/ etc / environment` в Go

0 голосов
/ 30 ноября 2018

Я пытаюсь найти файл /etc/environment, используя golang.Я проанализировал каждую строку файла и использовал следующий фрагмент кода:

var myExp = regexp.MustCompile(`(?P<first>.*)=(?P<second>.*)`), чтобы получить ключ = значение из файла.Но некоторые значения содержат =, и приведенное выше выражение не работает.

Например, одна из строк в среде будет выглядеть так: CONFIG_BASE64=SDFSWESC1=, и я хочу, чтобы она была отделена первым появлением =.т. е. ключ CONFIG_BASE64 и значение SDFSWESC1=

1 Ответ

0 голосов
/ 30 ноября 2018

Что не так с strings.SplitN()?Переход к регулярному выражению кажется излишним.

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    file, err := os.Open("/etc/environment")
    if err != nil {
        panic(err)
    }

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        // MAGIC
        split := strings.SplitN(scanner.Text(), "=", 2)
        // Line didn't have an = in it
        if len(split) < 2 {
            continue
        }
        // Skip comments, pretty naive though
        if strings.HasPrefix(split[0], "#") {
            continue
        }
        fmt.Printf("key %s value %s\n", split[0], split[1])
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }
}
...