我有一个文件,想要复制一些满足特定条件的条目。 例如
myfile
chr1 a b c
chr2 a b c
chr3 x y z
我想复制第一列以chr1开头的行,我想复制它n次。
myfile
chr1 a b c
chr1 a b c
chr1 a b c
chr2 a b c
chr3 x y z
答案 0 :(得分:1)
awk -v chr1=a -v n=3 '{ print; } substr($0,0,1) == chr1 { for (i = 0; i < n; ++i) print; }'
答案 1 :(得分:0)
这样的事情会好吗?
awk '{if ($1 == "chr1"){print; print;} print;}'
它将以chr1
...并使用for循环:
awk '{if ($1 == "chr1"){ for(i=1;i<=2;i++){ print; } } print;}'
好的,这应该是它
#!/usr/bin/awk -f
BEGIN{
while ((getline < "conditions") > 0){
cond[$1] = $2
}
}
{
print;
for (i=0; i<cond[$1]; ++i){
print;
}
}
给出一个名为“conditions”的文件:
chr1 5
chr2 3
和您的示例(在不同行上使用chr1,chr2等)作为输入
它会打印chr1线6次,chr2线4次,chr3线1次
答案 2 :(得分:0)
鉴于你在berdario回答中的评论,我写道:
awk '
NR == FNR {
cond[$1] = $2
next
}
$1 in cond {
for (i=1; i<cond[$i]; i++) print
}
{ print }
' conditions filename