Boucle sur les champs de saisie sous forme de tableau
Est-il possible de faire quelque chose comme ceci:
$ cat foo.txt
1 2 3 4
foo bar baz
hello world
$ awk '{ for(i in $){ print $[i]; } }' foo.txt
1
2
3
4
foo
bar
baz
hello
world
Je sais que tu pourrais faire ceci:
$ awk '{ split($0,array," "); for(i in array){ print array[i]; } }' foo.txt
2
3
4
1
bar
baz
foo
world
hello
Mais le résultat n'est pas dans l'ordre.
- Oui, les tableaux associatifs sont des collections non triées.
Vous devez vous connecter pour publier un commentaire.
Trouvé moi-même:
for
depuis l'exécution d'une seule commande.J'avais utilisation de sed:
Pas besoin de
awk
,sed
ouperl
. Vous pouvez facilement le faire directement dans le shell:Si vous êtes ouvert à l'aide de Perl, de faire le tour:
Ces options de ligne de commande sont utilisés:
-n
boucle autour de chaque ligne du fichier d'entrée, ne pas imprimer automatiquement la ligne-l
supprime les retours à la ligne avant le traitement, et ajoute dans de retour après-a
autosplit mode split lignes d'entrée dans le@F
tableau. Par défaut, la séparation d'espace.-e
exécuter le code perl