我有一个表格格式的文件,看起来像这样:
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