我有一个包含ID的这样一个巨大的制表符分隔的文件,计数非空列在文件
Q8H1E4 C5XVC0
M7ZVB2
Q0J032
Q8H1E4 M0Z0D4
C4J6K5
如何算ID的排名,而无需在每个柱迅速空的空间,使用bash命令可能?所以它给了我4列1和列3的3.另外如何计算唯一的ID,因为相同的ID可能会出现在文件中多次。我已经使用这个命令,但它没有指定哪列,但需要整条生产线,
grep -v '\s' file.txt |wc -l
我有一个包含ID的这样一个巨大的制表符分隔的文件,计数非空列在文件
Q8H1E4 C5XVC0
M7ZVB2
Q0J032
Q8H1E4 M0Z0D4
C4J6K5
如何算ID的排名,而无需在每个柱迅速空的空间,使用bash命令可能?所以它给了我4列1和列3的3.另外如何计算唯一的ID,因为相同的ID可能会出现在文件中多次。我已经使用这个命令,但它没有指定哪列,但需要整条生产线,
grep -v '\s' file.txt |wc -l
这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
谢谢,对每一行的解释都非常赞赏。另外,我需要打印计数总和.. – user3224522
如果你不反对蟒蛇解决这似乎给你问:
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']
不很确定hw使用bash命令,但在python中:使用'set()'来跟踪所有的id。对'split'的结果使用'len'来计算每行id的个数。 – 1478963
你正在阅读一个文件,并有多行? – abhishekgarg
谢谢@ user2100799我用set()做了它,但想知道是否有更快捷的方式来使用bash命令 – user3224522