2017-05-05 3 views
0

Ich habe eine txt-Datei, die mehrere Zeilen der folgenden Struktur hat:bash: grep Muster aus der Datei und zählen verschiedene Optionen

@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 

Jetzt möchte ich das Muster grep hinter dem letzten ‚:‘

In diesem Fall wäre es:

ATTCCTTTTCTTTCCC 
ATCACGATTATTTCCC 
GCCAATATCCTTTCCC 
ATCACGATTATTTCCC 

ich möchte dann die Anzahl der Male zählen jedes dieser Muster gefunden wurde.

So etwas wie folgt aus:

ATTCCTTTTCTTTCCC: 1 
ATCACGATTATTTCCC: 2 
GCCAATATCCTTTCCC: 1 

Kann dies mit bash getan werden?

+0

einige hinzufügen Beispiele, was Sie erhalten möchten. – tso

Antwort

0

Mit awk Sie können dies tun:

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 
0

können Sie sed verwenden, um alles zu entfernen, bevor :, dann sortieren mit uniq die Vorkommen zu zählen:

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

cat filename|cut -d':' -f9|sort|uniq -c

Verwandte Themen