J'ai trois fichiers!AWK lire un fichier et opérer entre différentes colonnes
coord.xvg
veloc.xvg
force.xvg
ont chacun de ces fichiers lignes avec plusieurs numéros permet de dire 10000 je voudrais construire un script qui
ouvre les trois fichiers lectures colonnes et effectuer des calculs arithmétiques entre eux pour chaque ligne.
Par exemple
if every file has 4 words
coord.xvg >> Time x y z
veloc.xvg >> Time vx vy vz
force.xvg >> Time fx fy fz
et c, v, f est synonyme de coord.xvg, veloc.xvg, force.xvg
if I write the operation 2*v*v+c*f*c the output should be
column1 Column2 Column3 Column4
Time 2*vx*vx+cx*fx*cx 2*vy*vy+cy*fy*cy 2*vz*vz+cz*fz*cz
J'ai trouvé dans Internet les éléments suivants
awk '{
{ getline < "coord.xvg" ; if (FNR==90307) for(i=1;i<=2;i+=1) c=$i}
{ getline < "veloc.xvg" ; if (FNR==90307) for(i=1;i<=2;i+=1) v=$i}
{ getline < "force.xvg" ; if (FNR==90307) for(i=1;i<=2;i+=1) f=$i}
}
END {print c+v+f}' coord.xvg
qui correspond à mes fichiers que je veux commencer à lire après 90307 lignes.
mais il ne m'a pas aidé autant qu'elle ne renvoie que les dernières valeurs de toutes les variables
Toute pensée ??
Merci pour votre réponse !! C'est très proche mais je pense que je n'ai pas expliqué exactement ce que je veux. Mes fichiers coord.xvg veloc.xvg force.xvg contiennent 90307 colonnes et presque 60gb !!!!!! J'ai donc besoin d'une instruction "for" dans le script ci-dessus. C'est pourquoi je l'ai dans mon exemple. –
J'ai fait ce qui suit mais il me manque encore quelque chose car pour la multiplicité de fz * z ce script multiplie la valeur courante de fz et la dernière valeur de coord.xvg !!!!! Awk '{ getline <"coord.xvg"; if (FNR == 90307) pour (i = 2; i <= 10; i + = 3) afficher "x =", x = $ i, " y = ", y = $ (i + 1)," z = ", z = $ (i + 2)," z * x = ", z * x getline <" veloc.xvg "; if (FNR = = 90307) pour (i = 2; i <= 10; i + = 3) imprimer "vx =", vx = $ i, "vy =", vy = $ (i + 1), "vz =", vz = $ (i + 2) getline <"force.xvg"; if (FNR == 90307) pour (i = 2; i <= 10; i + = 3) imprime "fx =", fx = $ i, "fy = ", fy = $ (i + 1)," fz = ", fz = $ (i + 2)," fz * z = ", fz * z } FIN {print" z = ", z} ' coord.xvg –