2010-11-27 3 views
1
cat file 
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 

J'ai essayé avecComment formater un fichier en 4 colonnes?

column -c 4 file 

pour obtenir une sortie avec 4 colonnes, mais il ne fonctionne pas - je reçois la même chose que l'entrée.
Est-ce que je me méprends sur la page de manuel de la colonne? Une deuxième question: quel format doit avoir l'argument de l'indicateur -s?

+1

Quel résultat attendiez-vous? –

Répondre

2

pour cette solution:

fold -w 12 file 

Le numéro 12 est le nombre de colonnes de données * la nombre de caractères dans une colonne (deux chiffres + un espace). L'option -w permet de désigner une largeur d'écran en termes de colonnes de caractères.

La commande column ne fonctionnera pas pour cela car elle est destinée à formater des colonnes de type journal.

Cela se rapproche de travailler comme vous le souhaitez:

sed 's/ /\n/g' file | column -xc 35 

Le « 35 » est quelque peu arbitraire, mais une valeur 32-39 fonctionnera dans ce cas. Cela dépend de la largeur des champs (2 caractères qui sont inférieurs à la largeur d'un taquet de tabulation), du nombre de champs désirés par ligne et de la largeur des taquets (8 caractères). Donc, en gros, 8 * 4 est 32.

Voici une démonstration de l'option -s (qui est utilisé avec -t):

$ echo -e "a;b|c\naaaaa;bbbbb|ccccc"|column -t -s ';|' 
a  b  c 
aaaaa bbbbb ccccc 

Sans utiliser column, la sortie ressemble à:

$ echo -e "a;b|c\naaaaa;bbbbb|ccccc" 
a;b|c 
aaaaa;bbbbb|ccccc 
+0

J'ai donc mal lu la documentation. Je pensais que -c serait le nombre de colonnes et avec le drapeau -s je pourrais faire une belle sortie. –

1

Voyons suppose que vous voulez:

01 02 03 04 
05 06 07 08 
09 10 11 12 
13 14 15 16 

Dans ce cas:

$ xargs -n4 < file 
Questions connexes