我的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脚本会抛出错误。
如果我将all添加到列表中,则列表的索引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命令工作的任何想法?似乎是解决问题的最简单方法。
感谢。
答案 0 :(得分: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"
之后立即匹配,然后您在"
之后开始一个新字符串。可能是错的,但尝试三重引号,看看是否有帮助。