придерживаясь awk
и решения подпроцесса, просто используйте двойные кавычки и отбрасывайте одинарные кавычки, которые полезны только для оболочки, но передаются буквально процессу при использовании 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])