繁体   English   中英

如何修复“awk:语法错误上下文是:>>> '-''<<<”python 子进程中的错误?

[英]How to fix "awk: Syntax error Context is: >>> ' -'' <<<" error in python subprocess?

尝试使用 subprocess.Popen 处理 p4 文件,然后通过 subprocess.Popen 再次将该输出传递给 awk。 输入格式为://xxx/xx/xx/xx/xx/xx.xx#99 - edit change xxxxxxx (text+k)

在这里用“x”替换了原始名称,因为它都是专有信息。 想根据“-”(空格连字符)拆分并获取带有修订号的文件名。

awk_cmd = ["awk","-F\' -\'","\'{print $1}\'"]
awk_cmd_output = subprocess.Popen(awk_cmd, stdout=subprocess.PIPE, stdin = p4_files_output.stdout)

看到这个错误来自 awk: awk: Syntax error Context is:

'-''<<<

当我在 cmd awk -F' -' '{print $1}' 中运行它时,它工作正常。 似乎 awk 最后得到了一个额外的单引号。 理想情况下,它应该是“-”而不是“-”。

坚持awk & subprocess 解决方案,只需使用双引号并删除单引号,这仅对 shell 有用,但在使用subprocess时按字面传递给进程,这会使命令失败:

awk_cmd = ["awk","-F -","{print $1}"]

subprocess添加正确的引用。 它不会根据空格拆分参数。

但最好的方法是删除awk ,并使用str.split ,例如:

output = []
for line in p4_files_output.stdout:
    output.append(line.decode().split(" -")[0])
output_text = "\n".join(output)

或使用理解的单行:

output_text = "\n".join([line.decode().split(" -")[0] line in p4_files_output.stdout])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM