Bash Python-如何修复此行类型错误:格式字符串的参数不足

Bash Python-如何修复此行类型错误:格式字符串的参数不足,bash,awk,Bash,Awk,从命令行开始,它可以正常工作,但是当我在Python中包含它时 终端: $ amixer -c2 | grep "Simple mixer control 'Mic',0" -A 5 | grep "Mono: " | sed -e 's/Capture /\n/g' | tail -1 | awk '{print $2}' | sed -e 's/%]//g' | sed -e 's/\[//g' 88 Python: tmp = "2" a = """amixer -c%s | grep

从命令行开始,它可以正常工作,但是当我在Python中包含它时

终端:

$ amixer -c2 | grep "Simple mixer control 'Mic',0" -A 5 | grep "Mono: " | sed -e 's/Capture /\n/g' | tail -1 | awk '{print $2}' | sed -e 's/%]//g' | sed -e 's/\[//g'
88
Python:

tmp = "2"
a = """amixer -c%s | grep "Simple mixer control 'Mic',0" -A 5 | grep "Mono: " | sed -e 's/Capture /\n/g' | tail -1 | awk '{print $2}' | sed -e 's/%]//g' | sed -e 's/\[//g'""" % tmp
print "Reply " + a
a = os.popen(a).read()
print a
错误:

Running: /var/tmp/p/test.py (Sun Dec  8 20:58:07 2013)


Traceback (most recent call last):
  File "/var/tmp/p/test.py", line 2, in <module>
    a = """amixer -c%s | grep "Simple mixer control 'Mic',0" -A 5 | grep "Mono: " | sed -e 's/Capture /\n/g' | tail -1 | awk '{print $2}' | sed -e 's/%]//g' | sed -e 's/\[//g'""" % tmp
TypeError: not enough arguments for format string


Execution Successful!
运行:/var/tmp/p/test.py(Sun Dec 8 20:58:07 2013)
回溯(最近一次呼叫最后一次):
文件“/var/tmp/p/test.py”,第2行,在
a=“”“amixer-c%s | grep”简单混音器控制'Mic',0“-a 5 | grep”单声道:“| sed-e's/Capture/\n/g'| tail-1 | awk'{print$2}';sed-e's/%]//g'| sed-e's/\[/g'”%tmp
TypeError:格式字符串的参数不足
执行成功!

您可以在一个
sed
中看到这一点:

... | sed -e 's/%]//g' | ...
将该位更改为:

... | sed -e 's/%%]//g' | ...

这就是如何在
python

的字符串中转义
%
尝试:a=r('amixer-c2 | grep“简单混音器控件'Mic',0”-a 5 | grep“Mono:“| sed-e's/Capture/\n/g'| tail-1 | awk'{print$2};sed-e's/%///g';sed-e's////g''88'))。不太确定,但原始字符串应该会起作用!从%%通过后,我现在得到以下结果:
回复amixer-c2 | grep“简单混音器控件'Mic',0”-一个5 | grep“Mono:”| sed-e's/Capture//g'| tail-1 | awk'{print$2}'| sed-e/%///g'| sed-e's/\[/g'sed:-e表达式#1,字符11:unterminated
s'命令grep:write error:breaked pipe`