我正在使用一个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命令。
提前致谢。
答案 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