Par exemple, j'ai un fichier (produit avec echo -e "var1\tvar2\t\var3\tvar4" > foo
) qui est sorti en tant que:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Je préférerais la sortie comme ceci (ici j'ai utilisé vim
et :set tabstop=14
):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Je peux obtenir la même fonctionnalité cat
si j'utilise $ tabs=15
bash (voir cette question ). Y at-il un programme qui fait ce genre de formatage automatiquement? Je ne veux pas expérimenter avec la tabs
valeur avant de cat
créer un fichier.
shell
command-line
cat
columns
Sébastien
la source
la source
-s $'\t'
(non trouvé dans toutes les implémentations de colonnes) au cas où certains champs contiennent des espaces.$'\t'
signifie tabulation. La nouvelle ligne est$'\n'
et ainsi de suite.column -ts: /etc/passwd
. Ça a l'air cool!-n
, c'est-à-dire éviter de fusionner plusieurs délimiteurs adjacentsPlusieurs options:
column est une commande non standard, certaines implémentations / versions ne supportent pas l'option -s. Il calcule la largeur de la colonne en fonction de l'entrée, mais cela signifie qu'il ne peut commencer à afficher que lorsque toute l'entrée a été alimentée.
$'...'
La syntaxe ksh93 est également trouvée dans zsh et bash.Avec zsh:
la source
Vous pouvez également utiliser
rs
une alternative àcolumn -t
:-c
modifie le séparateur de colonne d'entrée, mais-c
seul définit le séparateur de colonne d'entrée sur un onglet.-z
définit la largeur de chaque colonne sur la largeur de l'entrée la plus longue de la colonne au lieu de faire en sorte que toutes les colonnes aient la même largeur. Si certaines lignes ont moins de colonnes que la première, ajoutez-n
.la source
rs
est-ce? Je n'ai pas installé cette commande sur mon CentOS ni sur mes systèmes Ubuntu / Mint.rs
, vous pouvez donc l’installer avecapt-get install rs
.(x=$(cat);rs -c -z $(wc -l<<<"$x")<<<"$x")
? Je ne sais pas comment utiliser un fichier csvUn autre outil qui peut le faire est celui
tsv-pretty
de TSV Utilities d' eBay (disclaimer: je suis l'auteur). Il faut l'étape supplémentaire consistant à aligner les champs numériques sur le point décimal. Par exemple:Il existe plusieurs options de formatage. Par exemple,
-u
souligne l’en-tête et-f
formate les flottants dans un champ de manière similaire pour des raisons de lisibilité:Plus d'informations sont disponibles dans la référence tsv-pretty .
la source
La question portait sur la sortie des colonnes délimitées par des tabulations.
La réponse correcte est donc une petite adaptation de la réponse de @nisetama. J'ai ajouté l'option -C $ '\ t' qui définit le formatage de la sortie.
Bravo à @nisetama cependant :)
la source
ÉCHANTILLONS
REF LIB à: https://github.com/gdbtek/linux-cookbooks/blob/master/libraries/util.bash
la source
sed
être utilisé.