J'ai des fichiers texte qui contiennent des colonnes séparées par un certain nombre d'espaces, mais à la place, j'ai besoin d'un seul onglet comme séparateur. Est-il possible de faire à Bash?
linux
bash
text-manipulation
Utilisateur inconnu
la source
la source
Réponses:
Pour convertir des séquences de plusieurs espaces en onglet, mais laissez les espaces individuels seuls :
Pour ce faire, pour un certain nombre de fichiers:
ou
ou
la source
sed: -e expression #1, char 1: unknown command: `.'
find
du bas.sed
n'aime pas avoir d'espace avant l'extension de sauvegarde. J'ai édité ma réponse. Merci pour le rapport.Si votre personnage comporte plusieurs onglets, vous pouvez également utiliser
tr -s
:Par exemple:
Tous les espaces blancs deviendront un.
la source
Vous pouvez utiliser
sed
pour remplacer un certain nombre d'espaces par une tabulation:Exemple pour remplacer un ou plusieurs espaces par un onglet:
la source
La réponse la plus simple à utiliser uniquement
bash
est:S'il y a un nombre variable de colonnes, vous pouvez le faire, mais cela ne fonctionnera que dans
bash
, passh
:par exemple
produit:
(il y a un onglet entre chacun, mais il est difficile de voir quand je le colle ici)
Vous pouvez également le faire en utilisant
sed
outr
, mais notez que la gestion des blancs au début produit des résultats différents.sed:
tr:
la source
perl -p -i -e 's/\s+/\t/g' *.txt
la source
Essayez le script SED suivant:
Où <TAB> appuie sur la touche TAB.
la source
Ceci est une solution très simple:
sed fonctionne essentiellement de cette manière (sed's / old_pattern / new_pattern / g '). Dans ce cas, l'ancien modèle est "\ s +", ce qui signifie trouver un espace "s" une ou plusieurs fois "+" et la barre oblique inverse "\" pour interpréter cela comme une expression régulière.
Le nouveau modèle est l'onglet "\ t" qui est écrit au format d'expression régulière et le "g" est d'appliquer le remplacement à toutes les lignes "globalement".
la source