-1
我試圖通過Python子AWK:1:意外的字符「」」錯誤
cat /etc/passwd | awk -F':' '{print $1}'
我所做的是通過運行兩個子進程運行的命令來運行這個命令。
1st:將取出結果即。 貓/ etc/passwd中
第二:第一的輸出將被饋送作爲輸入提供給第二AWK -F ':' '{打印$ 1}'
下面是代碼:
def executeCommand(self, command, filtercommand):
cmdout = subp.Popen(command, stdout=subp.PIPE)
filtered = subp.Popen(filtercommand, stdin=cmdout.stdout, stdout=subp.PIPE)
output, err = filtered.communicate()
if filtered.returncode is 0:
logging.info("Result success,status code %d", filtered.returncode)
return output
else:
logging.exception("ErrorCode:%d %s", filtered.returncode, output)
return False
凡
命令= [ '須藤', '貓', '/ etc/shadow的']
filtercommand = [ 'AWK', 「-F ':'」, 「 '{打印$ 1}'」,' |」, 'uniq的']
錯誤:
awk: 1: unexpected character ''' error
如何創建傳遞給函數的filercommand列表:
filtercommand=["awk","-F\':\'", "\'{print $1}\'", '|', 'uniq']
'''{print $ 1}'「'中不需要單引號。只需刪除它們。而且,'「-F」'和'「':'」'必須是兩個獨立的參數,後者也不需要單引號。 – DyZ
嘗試沒有單引號拋出'awk:can not open | (沒有這樣的文件或目錄)' –
'''不是命令行參數,它是一個shell重定向。你不能以這種方式使用它。您必須重新連接'awk'的標準輸出到'uniq'的標準輸出,就像您將'cat'的標準輸出重新連接到'awk'的標準輸出一樣。順便說一句,你可以做'sudo awk -F':''{print $ 1}'/ etc/shadow',而不用'cat'。 – DyZ