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

标签 awk go

我正在尝试在我的 go 程序中执行 awk 命令(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
}

这个输出:

[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 它有效。但是,通过我的 go 程序运行它似乎有问题。我不确定我在这里做错了什么。我猜我是在错误地转义,但我尝试的一切似乎都不起作用。

最佳答案

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

关于awk - golang 命令即使手动执行也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27219739/

相关文章:

bash - 如何在 bash 中对数组进行排序并获取唯一值?

linux - 如何将文件的日期列转换为用户输入格式

python - awk:致命:无法打开文件 'file' 进行读取(权限被拒绝)

awk - 哪些 vimrc 设置控制 markdown 中缩进 awk 代码的语法突出显示?

unit-testing - go test 是否同时运行单元测试?

shell - 累积到个人使用awk

go - 如何覆盖 DefaultHTTPErrorHandler 格式消息

regex - 前面的token是不可量化的

json - 在 Go 中聚合 JSON 对象

go - GORM是否支持单插有很多关系?