2017-05-22 122 views
0

这是该Ubuntu的命令来完成的格式化的egrep -v “usernameshere” 在Python作为波纹管蟒蛇命令格式

userfilter = ["egrep", "-v", "\"{filter}\"".format(filter=filteruser)] 

为什么这样做: 我传递这到一个子进程并从python执行命令。

现在我要完成同样为这个命令是如何做到这一点。

awk '{gsub("admin","");print}' 

我想下面的一个,但没有工作,一些语法错误

尝试1

userfilter=["awk","\'{gsub({filter},\"\");print}\'".format(filter=filteruser)] 

尝试2

userfilter=["awk","\'{gsub({filter}.format(filter=filteruser),\"\");print}\'"] 

错误:

TRY 1个错误:

​​

TRY 2错误:

awk: 1: unexpected character '.' 
awk: line 1: extra ')' 
+0

什么是您遇到的特定语法错误? – Eduard

+0

'userfilter = [ “AWK”, “\ '{GSUB({滤波器},\ ”\“);打印} \'” 格式(滤波器= filteruser)] KeyError异常:“GSUB({滤波器} “” ); print''在第一个案例 –

+0

我想你有多个大括号的使用问题。试试这个'userfilter = “AWK”, “\ '{GSUB( ”+ filteruser +“ \ ”\“);}打印\'”]' – Eduard

回答

0

所以基本上多花括号的使用是给你的语法问题。只需使用双大括号来打印字符串中的实际大括号。

userfilter=["awk","\'{{gsub({filter},\"\");print}}\'".format(filter=filteruser)] 

Format strings contain “replacement fields” surrounded by curly braces {}. Anything that is not contained in braces is considered literal text, which is copied unchanged to the output. If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}.

Related question

我不知道你是如何遇到的第二个错误,因为当我复制粘贴代码到我的终端,我没有得到任何错误,而只是一个字符串。

>>> userfilter=["awk","\'{gsub({filter}.format(filter=filteruser),\"\");print}\'"] 
>>> userfilter 
['awk', '\'{gsub({filter}.format(filter=filteruser),"");print}\''] 
+0

当我在子使用并运行它,它很明显的错误出现如果我们只检查变量 –

+0

就不会运行如文档所述,如果要在文本文本中包含大括号字符,只需使用双括号。 。 'userfilter = [ “AWK”, “\ '{{GSUB({滤波器} .format(滤波器= filteruser),\ ”\“);打印}} \'”]' – Eduard

+0

没有工作'AWK:1 :意外字符''' awk:第1行:语法错误处于或接近|' –