为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
九州编程 2021-09-09 14:03:32
我正在尝试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.Buffervar stderr bytes.Buffercmd.Stdout = &outcmd.Stderr = &stderrerr := 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如果我从命令中获取打印的 args 并将其作为命令运行,awk -F '\t' '{if ($4 == "SAN FRANCISCO") print $0; }' zipcodes_ca.txt它就可以工作。但是,通过我的 go 程序运行它似乎有问题。我不确定我在这里做错了什么。我猜我正在错误地逃避事情,但我尝试的任何事情似乎都不起作用。
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

我不认为你需要在参数周围加上单引号。它们是使用 shell 阻止 shell 解释参数内容的产物。尝试没有他们。


查看完整回答
反对 回复 2021-09-09
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信