golang命令即使手动执行它也不起作用

Ell*_*son 3 awk go

我正在尝试awk在我的go程序中执行命令(awk命令从加利福尼亚邮政编码的制表符分隔文件中拉取指定城市的邮政编码,在本例中为旧金山):

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
}
Run Code Online (Sandbox Code Playgroud)

这输出:

[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
Run Code Online (Sandbox Code Playgroud)

如果我从命令中取出打印的args并将其作为命令运行awk -F '\t' '{if ($4 == "SAN FRANCISCO") print $0; }' zipcodes_ca.txt它.但是,通过我的go程序运行它似乎有问题.我不确定我在这里做错了什么.我猜我错误地逃避了事情,但我尝试的任何东西似乎都没有用.

Ale*_*man 9

我不认为你需要围绕参数的单引号.它们是使用shell的工件,它阻止shell解释参数内容.试试没有他们.