是否有使用bash魔术计算文本文件第二列元素之间的范围的干净方法?(我目前正在使用Python进行此操作)。
输入:文件1
A 1-5
A 17-19
B 1-5
B 4-6预期产出:文件2
A 1,2,3,4,5,17,18,19
B 1,2,3,4,5,6 编辑@Anthon:要累积元素,我使用类似的方法(然后使用for循环计算范围)
d_pos= {}
for row in open('File.txt'):
x, y = [ value.strip() for value in row.split('\t')]
if x in d_pos:
d_pos[x].append(y)
else:
d_pos[x] = [y]发布于 2014-07-16 08:50:47
您的Python代码非常接近,但是不能处理项目B的4和5的重叠。
以下操作正确地使用set()来防止重叠,设置默认值以消除显式测试--输入行上的d_pos和.split()中已经存在键,以减少对\t字符的依赖,并消除显式.strip():
d_pos= {}
for row in open('File.txt'):
x, y = [ value for value in row.split()]
y1, y2 = map(int, y.split('-'))
d_pos.setdefault(x, set()).update(range (y1, y2+1))
for x in sorted(d_pos):
print '{}\t{}'.format(x, ','.join(map(str, d_pos[x])))https://unix.stackexchange.com/questions/144769
复制相似问题