rhel 6.5 a la version gnu awk comme ci-dessous et sous Windows 10, je le vois comme - p> programme AWK utilise awk Variables intégrées exécuté de Linux résulte d'une commande incorrecte des valeurs dans le fichier 1 et 2 p> mais de windows Cela fonctionne parfaitement bien et la façon dont je le veux. p> Tout indices sera apprécié. p> p> argv code> et
Argind code>. Est-ce quelque chose à avec les paramètres régionaux de système dans Rhel? P>
base.csv code>: p>
fichier1 code> >:: p>
fichier2 code>: p>
fusion.awk code >:: p>
3 Réponses :
à itérer en ascendant Commande numérique: P> AWK code> Les tableaux sont des tables de hachage et l'itération sur leurs éléments à l'aide de
pour (x dans y) code> se produisent dans l'ordre arbitraire. GNU AWK a un moyen de spécifier quel ordre est utilisé, cependant, avec le
procinfo [" SORTED_IN "] CODE> Réglage
(Toutefois, cela ne fonctionne que avec GNU AWK 4.0 et plus récent; 3.x ne le prend pas en charge). ...
basenum = split($0, base, ",")
...
for (i = 1; i <= basenum; i++) {
if(base[i] in line)
printf(",%s", line[base[i]])
else
printf(",0")
}
Shawn je ne pense pas que cela soit lié à l'ordre. Comme je vois toujours que le résultat est identique lorsque nous utilisons ProCinfo pour un ordre trié.
@Rish ah-ha. Trié_in Code> a été ajouté à GAWK 4.0. Votre ancienne version de Gawk sur la machine RedHat est trop dépassée. Essayez la deuxième approche dans ma réponse.
IWAS utilisant des commentaires au lieu de l'onglet Réponse. Avec PROFCINFO, je n'ai pas reçu le résultat attendu.
Oui, j'ai même pensé à améliorer le RPM mais à moi surprises, je vois le paquet officiel RHEL6.5 utilise 3.7.1 qui est un peu surprenant. Je cherche à mettre à jour le RPM et à vérifier les résultats.
@shawn j'ai essayé d'utiliser le tableau de style C normal pour l'ancien format de style GNU-AWK. mais les résultats ne sont pas attendus. p> awk -f try.awk bey.csv fichier *
Dossier, Steve, Tignor, Ash, Michael, Jose, Sam, Joshua
Fichier1,0,0,0
Fichier2,0,0 P> P>
Voici comment écrire votre code robustablement et de manière à travailler en utilisant n'importe quel awk dans n'importe quel environnement:
$ awk -f merge.awk base.csv file1 file2 file,steve,tignor,ash,michael,jose,sam,joshua file1,0,888,0,9,-2,0,0 file2,0,0,77,0,0,0,66
Merci, oui, il fonctionne dans l'environnement Awk Awk.Grat!
HI ed..Can Cette solution est étendue si nous changeons la ligne en colonnes? Veuillez jeter un coup d'œil à la section des questions pour référence. Remerciement à adv.
Questions de Chameleon sont fortement découragées, posez cette question à la manière dont il était, puis poser une nouvelle question.
Veuillez consulter Aide d'édition
L'itération des clés d'un tableau arrive dans l'ordre arbitraire. Mais voir gnu.org/software/gawk/manual/html_node/ ...
Oui, je comprends que l'AWK utilise une matrice associative et une itération avec des indices ne sont pas similaires à d'autres langues, mais voulaient comprendre pourquoi le comportement est différent dans 2 systèmes différents. La logique principale reste la même.
Les deux versions de
GAWK CODE> utilisent différentes fonctions de hachage ou quelque chose selon ces lignes, donnant différents ordres d'itération.
Dit à juste titre, mais à la recherche d'une solution ou de travailler pour que cela soit fixé. Si nous apprenons à savoir comment le processus informatique et quelles fonctions sont impliquées en interne, nous pouvons changer le comportement peut être.
Le
#! / Bin / bash code> in
fusion.awk code> est juste un commentaire dans le script AWK, ce n'est pas un shebang spécifiant une coquille si c'est ce que vous aviez à l'esprit. Vous faites certainement pas b> Vous voulez essayer d'apprendre ce que GAWK fonctionne en interne et en quelque sorte à utiliser cela pour affecter le comportement, car votre script va probablement casser pour la prochaine version qui fait quelque chose de différent à l'intérieur.