我有一個包含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