gawk使用
p = subprocess.Popen(['gawk',"{ fname" + '="'+fname_output+'";' +
'if( $1 == "'+mid+'" )' + " { print $0 >> fname; } }",
fname_input])
p.communicate()
这个代码什么意思?尤其是引号里面的脚本怎么拼接的?求大牛解答 本帖最后由 suchocolate 于 2020-12-5 22:05 编辑
这是用 subprocess的popen方法执行gawk命令,popen接收字符串、列表和元组作为命令。
python 的字符串用单引号或双引号表示,用+号拼接字符串。
上面的代码传入的是列表
p = subprocess.Popen( # 方法的左括号
[ #列表开始
# gawk是第1个参数,也就是命令
'gawk',
#第2个参数,可以看到它由多个字符串通过 + 号拼接而成。
"{ fname" + '="' + fname_output + '";' + 'if( $1 == "'+mid+'" )' + " { print $0 >> fname; } }",
# 以下第3个参数
fname_input
]# 列表结束
) # 方法的右括号
这个linux命令可以简单看成这样:(注意:下面提到的只是变量名称,实际内容得看脚本带入的实参)
gawk {fname="fname+output"; if($1=="mid") {print $0 >> fname;}} fname_input
#1) 用gawk读取fname_input文件,
#2) 定义输出文件名变量fname="fname+output"
#3) 如果该行第1段是mid,那么把该行累加方式写入到输出文件中。
页:
[1]