|
发表于 2020-12-5 21:40:27
|
显示全部楼层
本帖最后由 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,那么把该行累加方式写入到输出文件中。
复制代码 |
|