将python参数传递给awk脚本

时间:2014-11-09 17:00:56

标签: python awk arguments

我正在使用一个python脚本,它接受一些参数:

 pipeline.py -t reg.bed -n WT -s run -ID 567

在python脚本中,我使用awk脚本,它应该接受上面传递的参数:

例如,它应该按名称获取参数,ID = 567并将其打印在文件中:

awk '{print "567", $0}' input.txt > output.txt

任何人都可以帮助我,我怎么能传递字符串" 567"到awk命令。

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用awk的-v选项

awk -v id=567 '{print id, $0}' input.txt > output.txt

虽然这个awk脚本非常简单,但你肯定应该在python中实现它。

答案 1 :(得分:-2)

应特别注意os.system内的 cmd格式(在python脚本中引用shell cmd)。

我举一个例子来说明

我有一个名为bNormal1.bedgraph的文件。
我想提取满足我条件的行:

(NR==1 && $1== "track")||($1=="chr1" && $2>220138080  && $3 < 220138189)

我想用变量替换一些参数:

chrom="chr1" $2=220138080 $3= 220138189

这是正确的python cmd:

import os

chrom="chr1"

start=220138080

end=220138189

bedgraphfile="bNormal1.bedgraph"

os.system('awk  \'(NR==1 && $1== "track")||($1=="%s" && $2> %d && $3 < %d) {{print $0}} \' %s'%(chrom,start,end,bedgraphfile))**

cmd输出:

track type=bedGraph name=bNormal1 visibility=full color=54,54,54

chr1    220138087   220138187   0.226285

0

查询文件的完整内容bNormal1.bedgraph

track type=bedGraph name=bNormal1 visibility=full color=54,54,54


chr1    220138087   220138187   0.226285


chr1    220138229   220138314   0.226285