J'ai un fichier avec deux colonnes comme indiqué ci-dessous (exemple):
FICHIER 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
J'ai besoin de formater cela et ma sortie attendue devrait être:
FICHIER 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Michael Rod 3
s'agit de 2 colonnes et non de 3?Réponses:
Si l'entrée n'avait été que de deux colonnes, j'aurais suggéré d'utiliser
column -t
. Cela ne fonctionne pas vraiment ici, car l'column
utilitaire traitera n'importe quel nombre d'espaces ou d'onglets comme des délimiteurs de colonne:"Michael Rod" est deux colonnes, de sorte qu'une seule ligne a une colonne de plus que les autres lignes, ce qui gâche la sortie.
Nous pouvons contourner cela en insérant un caractère de tabulation avant la dernière colonne, puis en
column
utilisant (uniquement) cela comme délimiteur:Dans Awk,
NF
correspond au nombre de champs (colonnes) et$NF
correspond aux données du dernier champ. Le script que j'utilise modifie simplement les données du dernier champ en ajoutant un caractère de tabulation avant d'imprimer la ligne complète.Si votre shell ne comprend pas
$'\t'
, vous pouvez choisir un autre caractère qui ne fait pas partie des données:la source