2016-10-25 40 views
1

我有我的Python腳本命令 -獲得一個AWK命令的Python腳本工作

client.connect(host, username=username, pkey=mykey) 
stdin, stdout, stderr = client.exec_command('sudo grep -i "key_prefix" /path/to/my/file.txt | awk -F "'" '{ print $4}'') 

不過,我得到了下面的錯誤 - SyntaxError: EOL while scanning string literal

我怎麼能拿Python腳本正確地切割字符串?

這是我在執行awk的字符串 -

$conf['key_prefix'] = 'my_string';。我想要的值是my_string值。在bash控制檯內部,它可以正常工作,但python腳本會引發錯誤。

如果我添加,那麼所有到一個列表,在列表指數值爲0是這樣的 -

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 
$conf['key_prefix'] = 'my_string'; 
$conf['key_prefix'] = 'my_string'; 

任何想法,讓awk命令工作?似乎是問題的最簡單的解決方案。

謝謝。

回答

1

相當確定你想在這裏使用一些三重引號。

stdin, stdout, stderr = client.exec_command('sudo grep -i "key_prefix" /path/to/my/file.txt | awk -F "'" '{ print $4}'') 

應該成爲

stdin, stdout, stderr = client.exec_command("""sudo grep -i "key_prefix" /path/to/my/file.txt | awk -F "'" '{ print $4}'""") 

問題(根據掉我所看到的)是你的第一個'-F"之後匹配,然後你有一個"後,這將啓動一個新的字符串。可能是錯誤的,但嘗試三重引號,看看是否有幫助。

+0

這樣做。感謝您的快速幫助。 –

+0

必須再等三分鐘。一旦計時器到期,我一定會這樣做。 –