Je suis un novice total à coder, mais me demande la meilleure façon de générer une table à partir des données de comptage grep.
Mon fichier de sortie de comptage grep ressemble à ceci:
AAR34355.1
./006D_id70.m8:0
./20D_id70.m8:0
./28D_id70.m8:0
AAR38850.1
./006D_id70.m8:0
./20D_id70.m8:2
./28D_id70.m8:4
A13520.1
./006D_id70.m8:0
./20D_id70.m8:0
./28D_id70.m8:0
J'ai besoin d'une sortie à regarder de plus comme ceci:
./006D_id70.m8 ./20D_id70.m8 ./28D_id70.m8
AAR34355.1 0 0 0
AAR38850.1 0 2 4
A13520.1 0 0 0
ou au moins un équivalent délimité.
Pardonnez ma description, comme je suis assez nouveau à ce sujet.
Est-il un moyen relativement simple de formatage des données de cette façon?
Vous pouvez le faire tout en awk, pas besoin de la production de Reshape grep. En supposant que les modèles à rechercher sont répertoriés dans un fichier nommé patterns
et fichiers à rechercher dans sont file1
, file2
et file3
; copier et enregistrer le bloc de code suivant dans un fichier nommé tst.awk
,
NR == FNR {
pat[NR] = $0
next
}
FNR == 1 {
fil[c++] = FILENAME
}
{
for (i in pat)
if ($0 ~ pat[i])
mat[FILENAME, pat[i]]++
}
END {
for (i in fil)
printf "\t%s", fil[i]
print ""
for (i in pat) {
printf "%s", pat[i]
for (j in fil)
printf "\t%d", mat[fil[j], pat[i]]
print ""
}
}
et courir
awk -f tst.awk patterns file1 file2 file3
démo:
$ seq 5 > file1
$ seq 3 7 > file2
$ seq 5 9 > file3
$ seq 3 2 7 > patterns
$ awk -f tst.awk patterns file1 file2 file3
file1 file2 file3
3 1 1 0
5 1 1 1
7 0 1 1
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots