使用 bash 命令:

使用 bash 命令:

我有一个表格格式的文件,看起来像这样:

abc00000000     1   643301  643374  Ile AAT 0   0   80.6    
abc00000000     2   1278112 1278193 Ser GCT 0   0   86.2    
abc00000000     3   1278382 1278463 Ser GCT 0   0   87.4    
abc00000000     4   1282753 1282824 Glu TTC 0   0   70.9    
abc00000001     1   138441  138512  Glu TTC 0   0   70.9    
abc00000001     2   186490  186571  Leu AAG 0   0   71.6
abc00000002     1   1342954 1343060 Tyr GTA 1342991 1343024 78.3    
abc00000002     2   1359693 1359620 Val AAC 0   0   75.1    
abc00000002     3   943029  942957  Val CAC 0   0   73.2

我只关心前两列。

第一列代表 DNA 支架的名称,第二列是这些支架中发生不同情况的次数(假设是突变,每次都不同)。

我尝试找到一个命令,为我提供每个脚手架的突变数量:因此,在脚手架“abc00000000”中,有 4 个突变,在脚手架“abc00000001”中,有 2 个突变等。

也许“awk”的东西可以工作,但我找不到正确的命令。谢谢

答案1

听起来您只想计算每个脚手架名称在第一列中出现的次数。如果是这样,你可以这样做:

$ sort file | awk '{print $1}' | uniq -c
4 abc00000000
2 abc00000001
3 abc00000002

或者,如果文件很大并且您不想对其进行排序:

$ awk '{a[$1]++}END{for(i in a){print i, a[i]}}' file 
abc00000000 4
abc00000001 2
abc00000002 3

答案2

这个 awk 方法应该适合你:

awk '{ col1[$1]+=$2; next } END { for ( i in col1) print i, col1[i] }'

答案3

使用 bash 命令:

$ cut -d" " -f 1 文件.txt |排序|优衣库-c

$ cut -d"\t" -f 1 文件.txt |排序|优衣库-c

d" " :如果表格由空格分隔

d"\t" :如果表格由 TAB 分隔

相关内容