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

34

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?

    
posée Ten-Coin 23.12.2012 - 10:12
la source

5 réponses

52

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 ;
    
réponse donnée devav2 23.12.2012 - 10:35
la source
53

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.

    
réponse donnée glenn jackman 23.12.2012 - 13:33
la source
4

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 , }'
    
réponse donnée codeJediNinjaDork 19.09.2014 - 00:55
la source
2

Un moyen simple d’obtenir des onglets est:

awk {'print "\t"'}
    
réponse donnée becko 22.11.2017 - 03:49
la source
0

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 .

    
réponse donnée kenorb 10.04.2016 - 06:33
la source

Lire d'autres questions sur les étiquettes