我有一个巨大的制表符分隔文件,其中包含ID,
Q8H1E4 C5XVC0
M7ZVB2
Q0J032
Q8H1E4 M0Z0D4
C4J6K5
如何计算ID的数量,使用bash命令可以快速计算每列中的空格,?因此它为第1列提供了4,为第3列提供了3。还有如何计算唯一ID,因为相同的ID可能会在文件中出现多次。我使用过这个命令,但它没有指定哪一列,而是整行,
grep -v '\s' file.txt |wc -l
答案 0 :(得分:0)
这个awk应该更合适:
awk 'NF>1{c++;next}
NF==1{id=$1!=""?$1 :$2;a[id]++}
END{
print "both fields:"c
for (i in a){print i,a[i]}}' infile
答案 1 :(得分:0)
如果您不反对python解决方案,这似乎可以满足您的要求:
import re
reg = re.compile('\W+')
uniqueEntries = []
counts = dict()
with open('test.txt', 'r') as dataFile:
for line in dataFile:
result = re.split(reg, line)
for item in result:
if item is not '':
if result.index(item) in counts:
counts[result.index(item)] += 1
else:
counts[result.index(item)] = 1
if item not in uniqueEntries:
uniqueEntries.append(item)
print('counts = {0}, uniqueEntries = {1}'.format(counts, uniqueEntries))
计数= {0:4,1:3},uniqueEntries = ['Q8H1E4','C5XVC0','M7ZVB2','Q0J032','M0Z0D4','C4J6K5']