Comment obtenir la longueur maximum de chaque colonne dans unix?
Suppose, j'ai un fichier source de ce genre.
ID|NAME|ADDRESS
1|ABC|PUNE
2|XYZA|MUMBAI
12|VB|NAGPUR
Je veux obtenir la longueur maximum de chaque colonne (à l'exclusion des noms d'en-tête).
La sortie devrait ressembler à ceci.
2/4/6
J'ai essayé la commande comme ceci.
queue +2 nom de fichier | cut-d"|" -f1 | awk '{ print length }' | sort -r | uniq
Cela fonctionne pour la 1ère colonne. Est-il une option disponible dans awk pour obtenir un max de longueur pour chaque colonne?
Vous devez vous connecter pour publier un commentaire.
Ce peut être une façon de le faire, de sorte que vous n'avez pas de soins sur le nombre de champs que vous avez: stocker les longueurs dans un tableau et vérifier en permanence si c'est le maximum ou pas. Enfin, la boucle à travers eux et imprimer les résultats.
Voir sortie:
Pour nombre variable de colonnes, on peut stocker le montant maximal de colonnes, par exemple, dans
cols
:Cela pourrait fonctionner pour vous (mais si il y a de nombreux domaines, je ne l'utiliserais
for
cycle et un tableau pour stocker la longueur de champs...):