簡體   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