La première semaine d'octobre, Arnold Robbins a annoncé la version bêta de gawk 4.2.0 maintenant disponible dans les listes de diffusion GNU-announce, bug-gawk et comp.lang.awk. Il est disponible en http://www.skeeve.com/gawk/gawk-4.1.65.tar.gz et il mentionne que Ceci est une version majeure, avec de nombreuses nouvelles fonctionnalités significatives.Quel est le comportement de FS = "" dans GNU Awk 4.2?
Je suis passé par le fichier NOUVELLES à creuser dans ces fonctions et arrêté à ce stade de faire des tests:
Les changements de 4.2.0 à 4.1.4
...
- Les révisions de la norme POSIX suppriment le cas particulier du mode POSIX lorsque FS = "" où newline n'était pas un séparateur de champs. Le code et le document ont été mis à jour.
Si je comprends bien, il parle de GNU Awk User's Guide → 4.5.2 Using Regular Expressions to Separate Fields:
Il y a une différence importante entre les deux cas de « FS =" "" (un seul espace) et FS =" [\ t \ n] + "'(une expression régulière correspondant à un ou plusieurs espaces, tabulations ou retours à la ligne). Pour les deux valeurs de FS, les champs sont séparés par des exécutions (plusieurs occurrences adjacentes) d'espaces, de tabulations et/ou de retours à la ligne. Cependant, lorsque la valeur de FS est "", awk supprime d'abord les espaces de début et de fin de l'enregistrement, puis décide où les champs sont.
C'est-à-dire la différence entre l'utilisation de FS = " "
et FS = "[ \t\n]+"
.
j'ai couru la nouvelle version et ai effectué un test avec le mode --posix
:
$ ./gawk --posix -F" " '{print "NR:", NR; for(i=1;i<=NF;i++) print i, $i}' <<< "hello how are
you"
NR: 1
1 hello
2 how
3 are
NR: 2
1 you
Et par rapport à mon précédent awk (4.1.3) et ne pouvait voir aucune différence:
$ gawk --posix -F" " '{print "NR:", NR; for(i=1;i<=NF;i++) print i, $i}' <<< "hello how are
you"
NR: 1
1 hello
2 how
3 are
NR: 2
1 you
Dans l'ensemble, ma question est: quelle est la différence dans le comportement de FS = " "
dans le mode --posix
pour GNU Awk 4.2? Qu'est-ce qui a été changé exactement?
1 oui, je pense aussi qu'il devrait être 4.2.tar.gz
, mais http://www.skeeve.com/gawk/gawk-4.2.tar.gz n'existe pas
c'est curieux ... annoncé mais non réalisé? – RomanPerekhrest