python结构运行awk命令返回一个KeyError:'print $ 1'

我正在使用python结构运行命令,它不起作用,并给我一个KeyError:

run('docker ps -a | grep {} | awk "{print $1}"'.format(container_name)) KeyError: 'print $1' 

但是如果我用%sreplace.format,它可以工作,那怎么可能:

 run("docker ps -a | grep %s | awk '{print $1}'" % container_name) 

我的Python版本2.7.8,“.format()”肯定可以工作,它似乎与“awk”命令有关。

格式正试图替代{print $1} ,当然没有这样的密钥。

你可以通过用{}围住它们来转义{}

 run('docker ps -a | grep {} | awk "{{print $1}}"'.format(container_name)) 

应该工作 – 作为一个testing:iPython 3.0:

 In [1]: container_name = 'fred' In [2]: 'docker ps -a | grep {} | awk "{{print $1}}"'.format(container_name) Out[2]: 'docker ps -a | grep fred | awk "{print $1}"' 

python:

 Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> container_name = 'fred' >>> 'docker ps -a | grep {} | awk "{{print $1}}"'.format(container_name) 'docker ps -a | grep fred | awk "{print $1}"' >>>