如何在Linux Ubuntu中的不同时间重复不同的行?

时间:2016-09-03 12:04:24

标签: terminal transform ubuntu-16.04 bigdata

如何使用带规格的文件在不同时间重复不同的行? (我认为这将更好地举例说明)

示例(我想要重复行的文件):

ID01 rs01 AB
ID02 rs01 BA
OA03 rs01 AA
EA04 rs01 BB

示例(指定每行必须重复多少次的文件 - 指定第一列中的字符):

ID01 1
ID02 5
OA03 2
EA04 3

我想要输出文件

ID01 rs01 AB
ID02 rs01 BA
ID02 rs01 BA
ID02 rs01 BA
ID02 rs01 BA
ID02 rs01 BA
OA03 rs01 AA
OA03 rs01 AA
EA04 rs01 BB
EA04 rs01 BB
EA04 rs01 BB

但就我而言,我的真实数据很大。谢谢。

1 个答案:

答案 0 :(得分:1)

以下python脚本将完成这项工作:

import sys

default_repeats = 1

repeats_file = open(sys.argv[2])
data_file = open(sys.argv[1])

repeats = { i: int(n) for i, n in ( l.split()[:2] for l in  repeats_file.readlines() ) }

for line in data_file.readlines():
    identifier = line.split(' ')[0]
    sys.stdout.write(line * repeats.get(identifier, default_repeats))

它接受两个论点:

$ python script_file.py <file_with_data> <file_with_repetitions>