获取AWK命令以使用Python脚本

时间:2016-10-25 18:32:21

标签: 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脚本会抛出错误。

如果我将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命令工作的任何想法?似乎是解决问题的最简单方法。

感谢。

1 个答案:

答案 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"之后立即匹配,然后您在"之后开始一个新字符串。可能是错的,但尝试三重引号,看看是否有帮助。