supprimer l'espace blanc dans un bash à l'aide de sed
J'ai un fichier qui contient un numéro de suivi par un chemin de fichier sur chaque ligne pour une grande quantité de fichiers. De sorte qu'il ressemble à ceci:
7653 /home/usr123/file123456
Mais le problème c'est il y a 6 vide des espaces blancs avant elle qui déclenche le reste de mon script. J'ai inclus la ligne qui la produit ci-dessous:
cat temp | uniq -c | sed 's/ *//g' > temp2
J'ai rétréci vers le bas à la uniq
de commande qui produit l'espace blanc inutile. J'ai essayé de mettre en œuvre un sed
de commande pour supprimer l'espace blanc, mais pour une raison quelconque, il supprime tous les mais un. Comment serais-je capable de modifier mon sed
déclaration ou mon uniq
déclaration à se débarrasser de ces espaces? Toute aide serait grandement appréciée!
OriginalL'auteur Sal | 2015-04-21
Vous devez vous connecter pour publier un commentaire.
Pour supprimer tous les grands espaces, utilisation:
Pour supprimer tous les principaux espaces blancs de toutes sortes:
La
^
symbole ne correspond qu'au début d'une ligne. De ce fait, le ci-dessus ne toucherai pas d'espace pas au début de la ligne.OriginalL'auteur John1024
Briser votre sed modèle "s/*//g':
Le modèle de recherche, ' *', correspond à un seul espace, suivi par zéro ou plusieurs espaces. Le remplacement du modèle, ' ', est un espace unique. Le résultat est de trouver un ensemble de un ou plusieurs espaces et de le remplacer par un espace, d'où la suppression de tous les espaces. Faire enlever tout, vous pouvez simplement faire de votre remplacement du modèle de la chaîne vide ": sed 's/*//g'
Noter, cependant, que le 'g', il est global, donc, qui va également supprimer l'espace entre le nombre et le chemin d'accès au fichier. Si vous voulez juste pour retirer le premier espace, vous pouvez simplement déposer le g. Vous pouvez également utiliser le quantificateur+, ce qui signifie "au moins un", au lieu de l' *, qui signifie "à zéro".
Cela donnerait: sed 's/\+/'
ETA: Comme John1024 points, vous pouvez également utiliser le ^ ancrage pour indiquer le début de la ligne, et le \s génériques pour spécifier des espaces au lieu de juste des espaces: sed 's/\s\+//'
OriginalL'auteur eewallace