Я пытаюсь выполнить команду awk
в моей программе go (команда awk вытаскивает почтовые индексы для указанного города, Сан-Франциско в этом случае, из файла с разделителями табуляции Калифорния почтовые индексы):Команда golang не работает, хотя вручную ее выполняет
cmd := exec.Command(
"awk",
"-F",
"'\\t'",
"'{if ($4 == \"SAN FRANCISCO\") print $0; }'",
"zipcodes_ca.txt",
)
fmt.Println(cmd.Args)
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
return
}
это выходы:
[awk -F '\t' '{if ($4 == "SAN FRANCISCO") print $0; }' zipcodes_ca.txt]
exit status 2: awk: syntax error at source line 1
context is
>>> ' <<<
awk: bailing out at source line 1
Если я отпечатанные арг из команды и просто запустить, что в качестве команды awk -F '\t' '{if ($4 == "SAN FRANCISCO") print $0; }' zipcodes_ca.txt
он работает. Но, запуская его через мою программу, похоже, возникают проблемы. Я не уверен, что я делаю неправильно здесь. Я предполагаю, что я избегаю вещей неправильно, но ничего, что я пытаюсь, похоже, работает.
Ahhh, спасибо. Я попытался вытащить цитаты из предложения 'if', но не аргумент' \ t'. Вытащить одиночные цитаты из обоих сделали трюк! –