Deux opérations SED en une seule

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 18 avril 2013 à 12:31
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 18 avril 2013 à 13:54
Bonjour,

je fais actuellement deux opérations avec SED sur un fichier afin de supprimer tous les espaces en début de ligne puis pour supprimer tous les espaces avant/après le pipe '|' donc :

sed -e 's/^ *//g' fichier > fichier1
sed 's/ *\(^\||\) /\1/g' fichier1 > fichier2


Est il possible de faire cela avec une seule commande SED ?

Merci


2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 18/04/2013 à 13:27
Salut,

$ cat fich  
 blabla 
   blabla | blablabla|bla |bla 
bla | bla 
  bla|  bla    | bla 

$ sed -e 's/^ *//g;s/ *\(|\) */\1/g' fich 
blabla 
blabla|blablabla|bla|bla 
bla|bla 
bla|bla|bla 

$


Zen my nuggets ;-)
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
18 avril 2013 à 13:29
Étrangement cette syntaxe fait aussi l'affaire :
$ sed -e 's/^ *\| *\(|\) */\1/g' fich
blabla
blabla|blablabla|bla|bla
bla|bla
bla|bla|bla

$ 
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
18 avril 2013 à 13:54
Salut zipe31

Curieux puisque j'avais testé la première méthode mais j'avais une erreur du style sed: -e expression n°1.

Merci
0