Comment des caractères peuvent être insérés dans des chaînes appartenant à une colonne résultant d'une commande d'entrée utilisant awk et sed

0

Voici une formule qui a les bases appropriées pour mon but - entre autres, elle imprime des fichiers uniquement, en utilisant pour les tailles pouvoirs de 1024 2 ^ 10 - La taille du fichier impliqué est de 1382 octets (1,35 KiB ):

# ls -lh | grep -v '^d' | sed -n '2p' | awk '{print $5, $(NF)}'
1,4K anaconda-ks.cfg

Conditions à appliquer dans la formule:

  • insérer '' avant la dernier personnage appartenant à la première colonne de la sortie;
  • insérer ' iB ' après la dernier personnage appartenant à la première colonne de la sortie;
  • deux chiffres fractionnaires au valeur la plus proche (par exemple 1 095 = 1 09, 1 096 = 1,10);
  • imprimer des colonnes relatives aux tailles et aux fichiers.

Sortie à atteindre une fois les conditions appliquées:

# ls -lh | grep -v '^d' | sed <expression> | awk <expression>
1,35 KiB anaconda-ks.cfg
Ricky Tigg
la source
1
Veuillez expliquer quels résultats vous voulez et quels résultats vous obtenez actuellement. Il serait également utile d’expliquer pourquoi vous le faites.
uSlackr

Réponses:

0

Vous devriez éviter d'analyser la sortie de ls. Utilisez plutôt le stat commander.

Et au lieu d'essayer de forger un nouveau format de nombre, utilisez la commande numfmt des coreutils.

Pour que vous puissiez utiliser ceci:

for i in *; do 
  printf "%s %s\n" $(stat -c %s "$i" | numfmt --to=iec-i --suffix=B --format "%.2f") "$i"
done
oliv
la source