J'aimerais utiliser la column
commande Unix pour formater du texte. J'ai des champs délimités par des onglets, mais dans chaque champ, il y a aussi des espaces. column
délimite les espaces blancs (onglets et espaces). Comment faire en sorte que les colonnes utilisent uniquement des tabulations comme délimiteur?
J'essayais de spécifier l'onglet comme délimiteur en utilisant:
cat myfile | column -t -s"\t"
column -t -s $'\t'
que bash semblait penser à'\t'
la fois\
ett
, mais$'\t'
signifie un onglet littéral. Bash pue$'\t'
fabricant marque le délimiteur. Mais je suis presque sûrawk -F "\t"
d’utiliser un onglet comme délimiteur pour awk. Pourquoi cela fonctionne et pas ici pour la colonne?J'ai utilisé ce qui suit (ne fonctionne que si votre texte ne contient pas
|
):Cela remplace simplement les onglets par des tuyaux, puis utilise colonne avec des tuyaux comme délimiteurs.
(Je l'ai fait parce que je n'ai rien vu dans la réponse de Stéphane qui fonctionne parfaitement dans la coquille du poisson. Sinon, la réponse de Stéphane semble bonne.)
la source
Pour POSIX,
$'...'
connu sous le nom d'échappement ANSI-C, n'est pas défini.Au lieu de cela, vous pouvez utiliser
$(printf '\t')
:$(printf '\011')
peut être utilisé, car011
(la représentation octale de la décimale 9) est le code ANSI pour un caractère de tabulation horizontale:Cependant, voir ci-dessous le commentaire de Stéphane Chazelas pour expliquer pourquoi cela peut ne pas être cohérent d'une version à l'autre du shell.
la source
"$(printf '\t')"
indiqué dans ma réponse. Notez que$'...'
son inclusion dans la prochaine version majeure de la spécification POSIX est prévue.$(printf '\t')
POSIX? Je vous remercie!Le
-t
est pour sélectionner le nombre de colonnes que vous voulez. Laisser ce vide ne change rien. En outre, vous voulez un espace après le,-s
alors essayez ceci:cat myfile | column -s \t
la source
column
remplit les lignes avant les colonnes. Vous pouvez être intéressé parpr