84 votes

Comment séparer les champs avec un espace ou une tabulation en awk

En jouant avec awk j'ai exécuté :

ls -la >> a.txt ; awk {'print $5  $1'} a.txt ;

Cela donne une sortie comme :

53277-rw-------
52347-rw-------

Comment puis-je obtenir un espace entre ces deux parties de la sortie ?

109voto

devav2 Points 33862

Changer simplement la ligne en

ls -la >> a.txt ; awk {'print $5 "        " $1'} a.txt ;

cela devrait imprimer la sortie avec des espaces.

En espérant que cela aide.

Éditer:

Comme suggéré par McNisse, vous pouvez utiliser printf, ce qui vous fournirait un bon format de sortie

ls -la >> a.txt ; awk {'printf ("%5s\t%s\n", $5, $1)'} a.txt ;

89voto

Todd Gamblin Points 101

Une autre technique spécifique à awk, utilisez le "séparateur de champ de sortie"

ls -la | awk -v OFS='\t' '{print $5, $1}'

La virgule est cruciale ici.

23voto

becko Points 10923

Une façon simple d'obtenir des onglets est :

awk {'print $5"\t"$1'}

8voto

codeJediNinjaDork Points 105

Je sais que c'est un ancien fil de discussion, mais je suis en train d'apprendre et j'ai trouvé ces messages utiles. Ma meilleure solution a été d'utiliser gawk pour insérer des espaces entre les variables pour vous.

ls -la | gawk '{print $1, $9}'

4voto

kenorb Points 8840

Pour placer l'espace entre les arguments, il suffit d'ajouter " ", par exemple awk {'print $5" "$1'}.

Cependant, il n'est pas recommandé de analyser la sortie de la commande ls, car elle n'est pas fiable et la sortie est destinée aux humains, pas aux scripts. Utilisez donc des commandes alternatives telles que find ou stat.

Voici un exemple d'utilisation de GNU stat :

$ stat -t *
001.txt 23 8 81a4 501 20 1000004 242236402 1 0 0 1460260387 1460260239 1460260239 1460260194 4096
7c1c.txt 21 8 81a4 501 20 1000004 242236595 1 0 0 1460261322 1460260486 1460260486 1460260486 4096

ce qui vous permettra d'obtenir une sortie conviviale pour la machine (sous une forme concise), afin que vous puissiez obtenir exactement ce dont vous avez besoin. Ensuite, utilisez -c pour utiliser un format spécifique, ou utilisez awk, cut ou read pour obtenir les bonnes colonnes.

Consultez stat --help pour plus d'options. Par exemple, pour afficher le jour de la modification, consultez cet exemple.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X