En jouant avec awk
je suis venu pour exécuter:
ls -la >> a.txt ; awk {'print '} a.txt ;
Cela donne une sortie comme:
53277-rw-------
52347-rw-------
Comment puis-je obtenir un espace entre ces deux amis de sortie?
Changez simplement la ligne en
ls -la >> a.txt ; awk {'print " " '} a.txt ;
cela devrait imprimer la sortie avec des espaces.
J'espère que ça aide.
Modifier:
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", , )'} a.txt ;
Autre technique spécifique à awk, utilisez le "séparateur de champs de sortie"
ls -la | awk -v OFS='\t' '{print , }'
La virgule est cruciale ici.
Je sais que c'est un vieux sujet, mais j'apprends et je trouve ces messages utiles. Ma meilleure solution consistait à utiliser gawk pour insérer des espaces entre les variables pour vous.
ls -la | gawk '{print , }'
Pour placer l’espace entre les arguments, ajoutez simplement " "
, par ex. awk {'print " "'}
.
Cependant, il est non recommandé de analyser la sortie de la commande ls
, comme ce n'est pas fiable et que la sortie est pour les humains, pas pour les scripts. Par conséquent, utilisez 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
qui vous affichera des résultats faciles à lire (sous une forme concise), pour que vous puissiez obtenir exactement ce dont vous avez besoin. Utilisez ensuite -c
pour utiliser un format spécifique ou utilisez awk
, cut
ou read
pour obtenir les bonnes colonnes.
Vérifiez stat --help
pour d'autres options. Par exemple, pour imprimer un jour de modification, consultez cet exemple .
Lire d'autres questions sur les étiquettes command-line text-processing awk