鱼C论坛

 找回密码
 立即注册
查看: 2006|回复: 1

gawk使用

[复制链接]
发表于 2020-12-5 20:38:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
            p = subprocess.Popen(['gawk',
                    "{ fname" + '="'+fname_output+'";' +
                    'if( $1 == "'+mid+'" )' + " { print $0 >> fname; } }",
                    fname_input])
            p.communicate()

这个代码什么意思?尤其是引号里面的脚本怎么拼接的?求大牛解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,那么把该行累加方式写入到输出文件中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 03:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表