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?
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 ;
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.
Un moyen simple d'obtenir des onglets est:
awk {'print $5"\t"$1'}
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}'
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 ls
name__ , 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 find
ou stat
name__.
Voici un exemple d'utilisation de GNU stat
name__:
$ 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 awk
name__, cut
ou read
pour obtenir les bonnes colonnes.
Vérifiez stat --help
pour plus d'options. Par exemple, pour imprimer le jour de la modification, cochez cet exemple .