Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1598 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [RESOLU] [SED] supprimer les espaces inutiles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] [SED] supprimer les espaces inutiles

n°1339770
slc
Posté le 19-06-2013 à 10:43:43  profilanswer
 

Bonjour,
je débute en SED et je n'arrive pas à isoler correctement ma chaine.  
 
j'ai une chaine de la forme :
                du texte<
je souhaite récupéré 'du texte'. J'ai donc décomposé la chaine en :
- 0 ou plusieurs espaces
- n'importe quel caractere différent de <
 

Code :
  1. sed 's/[ ]*\([^<]*\).*/\1/'


 
Jusque la je suis content de moi :). Mais je viens de m'apercevoir que la résultat peut se terminer par plusieurs espaces. Je souhaite donc les supprimer.
comment remplacer [^<] ? J'ai tenté sans succès :

Code :
  1. sed 's/[ ]*\([^[ ]*<]*\).*/\1/'
  2. sed 's/[ ]*\([^<]*\)[ ]*.*/\1/'


Message édité par slc le 19-06-2013 à 18:05:44
mood
Publicité
Posté le 19-06-2013 à 10:43:43  profilanswer
 

n°1339800
goblin_rie​ur
ingé systemes unix
Posté le 19-06-2013 à 15:46:18  profilanswer
 

$ cat > toto
 sfffsd <fdsfsd
 fdsfds     s <sfsdfs
^D
$ sed 's/.*</</' toto
<fsdfd
<sfdsffs
$ rm toto

 

c'est ça que tu veux faire ? :hello:


Message édité par goblin_rieur le 19-06-2013 à 15:46:56

---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
n°1339801
goblin_rie​ur
ingé systemes unix
Posté le 19-06-2013 à 15:50:28  profilanswer
 

sed 's/.*</</;s/[ ]*$//' fichier


 
le second substitute c'est pour ajouter la suppression des espaces de fin de ligne


---------------
Collectionner les vieux serveurs c'est chouette mais c'est lourd et ça prend de la place ;)
n°1339808
slc
Posté le 19-06-2013 à 18:05:13  profilanswer
 

Un grand merci. J'avais contourné le problème en effectuant un nouveau sed sur mon fichier csv final. Mais ca ne faisait pas tres 'propre'.
Je savais pas que l'on pouvait enchainer plusieurs commandes dans un sed. C'est pour cela que j'essayais de tout faire avec un seul substitute. Ce qui a posteriori est complement cretin ;)
 
en fait je parse un html (je sais awk et sed sont pas fait pour ca :) )
 
     mon texte      <encore du code
je veux obtenir
mon texte
sans espace avant et apres.  
 
Donc en gardant mon premier sed et en ajoutant ton second substitute ca va fonctionner
 
Encore merci.

n°1343309
zipe31
Posté le 18-08-2013 à 18:27:25  profilanswer
 

Salut,
 
Testé que sur le texte fourni en échantillon, donc peut ne pas marcher à 100%.
 
Le "cat -A" n'est là que pour faire apparaître les fins de lignes.  

Code :
  1. $ echo "${A}" | cat -A


    mon texte      <encore du code $


 

Code :
  1. $ echo "${A}" | sed 's/^ \s\+\(.*[^ ]\)\s\+<.*/\1/' | cat -A


mon texte$


 ;)
 
Édit : Plus simple et qui répond mieux à la demande :

Code :
  1. $ echo -e "${A}\n${B}"


    mon texte      <encore du code  
     mon texte<encore du code


 

Code :
  1. $ echo -e "${A}\n${B}" | sed 's/^ \s\+\(.*[^ ]\) *<.*/\1/' | cat -A


mon texte$
mon texte$



Message édité par zipe31 le 18-08-2013 à 18:34:31

---------------
$ man woman

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [RESOLU] [SED] supprimer les espaces inutiles

 

Sujets relatifs
[sed] supprimer \n sur un nombre indéterminé de lignes consécutivesSupprimer Linux, pour revenir à Windows
[Résolu] Sed: extraire une chaîne avec un préfixe optionelA l'aide !!! EFI supprimer.
Comment supprimer le retour à la ligne final d'un fichierSupprimer certains fichiers de dossiers et sous dossiers
Comment supprimer proprement grub/grub2Comment supprimer ubuntu de mon disque dur?
Expressions régulières et SED[RESOLU] [SOLARIS 10] Problème pour supprimer un répertoire
Plus de sujets relatifs à : [RESOLU] [SED] supprimer les espaces inutiles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR