bash:grep模式来自文件并计算不同的选项

时间:2017-05-05 14:05:38

标签: bash

我有一个包含以下结构的多行的txt文件:

@HISEQ:XXX:8:1101:11058:2481 1:N:0:ATTCCTTTTCTTTCCC
@HISEQ:XXX:8:1101:11009:2489 1:N:0:ATCACGATTATTTCCC
@HISEQ:XXX:8:1101:1414:2364 1:N:0:GCCAATATCCTTTCCC
@HISEQ:XXX:8:1101:11009:2489 1:N:0:ATCACGATTATTTCCC

现在我想要了解最后一个&#39; <#39;

背后的模式

在这种情况下,它将是:

ATTCCTTTTCTTTCCC
ATCACGATTATTTCCC
GCCAATATCCTTTCCC
ATCACGATTATTTCCC

然后,我想计算每个模式的找到次数。

这样的事情:

ATTCCTTTTCTTTCCC: 1
ATCACGATTATTTCCC: 2
GCCAATATCCTTTCCC: 1

这可以用bash完成吗?

3 个答案:

答案 0 :(得分:0)

使用awk你可以这样做:

awk -F: '{print $NF; tok[$NF]++} END {
   print "==== Uniques ==="; for (i in tok) print i, tok[i]}' file

ATTCCTTTTCTTTCCC
ATCACGATTATTTCCC
GCCAATATCCTTTCCC
ATCACGATTATTTCCC
==== Uniques ===
ATTCCTTTTCTTTCCC 1
GCCAATATCCTTTCCC 1
ATCACGATTATTTCCC 2

答案 1 :(得分:0)

您可以使用sed删除:之前的所有内容,然后使用uniq排序以计算出现次数:

sed 's/.*://' file | sort | uniq -c

答案 2 :(得分:0)

static int max(int a, int b) { return (a > b)? a : b; }