web-dev-qa-db-fra.com

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

En jouant avec awk je suis venu exécuter:

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

Ceci donne une sortie comme:

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

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

48
rɑːdʒɑ

Il suffit de changer la ligne pour

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

cela devrait imprimer la sortie avec des espaces.

J'espère que cela t'aides.

Modifier:

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

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

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

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

La virgule est cruciale ici.

65
glenn jackman

Un moyen simple d'obtenir des onglets est:

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

Je sais que c'est un vieux fil de discussion, mais j'apprends tout simplement et j'ai trouvé ces messages utiles. Ma meilleure solution consistait à utiliser gawk pour insérer des espaces entre les variables.

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

Pour placer l’espace entre les arguments, ajoutez simplement " ", par exemple. awk {'print $5" "$1'}.

Cependant, il est non recommandé de analyser la sortie de la commande lsname__ , car elle n'est pas fiable et que la sortie est destinée aux humains, pas aux scripts. Par conséquent, utilisez des commandes alternatives telles que findou statname__.

Voici un exemple d'utilisation de GNU statname__:

$ 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

qui imprimera votre sortie conviviale pour la machine (sous forme abrégée), de sorte que vous puissiez obtenir exactement ce dont vous avez besoin. Utilisez ensuite -c pour utiliser un format spécifique ou utilisez awkname__, cutou readpour obtenir les bonnes colonnes.

Vérifiez stat --help pour plus d'options. Par exemple, pour imprimer le jour de la modification, cochez cet exemple .

1
kenorb