10
votes

Utilisez SED pour supprimer tous les espaces vides principaux / suivants dans un fichier texte

FILE1:

sed 's/ *$//' b > c


2 commentaires

Alors que la réponse de @ ghostdog74 est une bonne, la réponse de Mouviciel est le correct un, selon votre question. J'ai suscité les deux, mais je crois que @ Mouviciel mérite d'être accepté comme bonne réponse.


Vous êtes correct - Mouviciel est maintenant accepté. Merci à Mouviciel (réponse correcte) et Ghostdog74 (instructions à AWK) pour leur temps!


4 Réponses :


15
votes

Vous avez presque compris:

sed -i -e 's/^[ \t]*//;s/[ \t]*$//' a


4 commentaires

J'envisagerais également de faire correspondre \ s qui est le générique "tous les caractères blanchisseurs".


Ne devrait-il pas être sed -e 's / ^ [\ t] * //; s / [\ t] * $ //' A> C ?


Je vois toujours sed -e 's / ^ [\ t] * //; s / [\ t] * $ /' A> C qui ne fonctionne pas pour moi (Bash version 4.3.30 , Funtoo-Linux).


@Nikosalexandris - merci, maintenant je vois la barre oblique disparue. Fixé.



7
votes

moyen plus facile, en utilisant AWK

awk '{gsub(/^ +|  +$/,"")}1' file


3 commentaires

Le premier a fonctionné parfaitement et est le plus simpliste - je sais ce n'est pas ce que j'ai demandé (c'est-à-dire SED) - mais c'est si élégant :). Je vais regarder dans gadx maintenant.


Le premier supprime tous les espaces blanchisseurs parasites, non seulement en tête et en traînant. Le second fonctionne mieux. awk est un excellent outil.


Ah, je vois les autres espaces enlevés avec le premier maintenant - le second fonctionne sans suppressions supplémentaires.



3
votes
sed -e 's/something/something else/' -e 's/another substitution/another replacement/'

0 commentaires

0
votes

Notez que dans le cas plus général d'application de plusieurs filtres d'affilée à un fichier d'entrée sans utiliser de fichiers intermédiaires, la solution consiste à utiliser des tuyaux: xxx

évidemment, ils ne sont évidemment pas requis ici Parce qu'une invocation de SRD est suffisante, mais si la deuxième commande SED était quelque chose de différent, comme uniq ou trier, ce modèle est le bon.


0 commentaires