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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  sed ne garder que les caractères avant un délimiteur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sed ne garder que les caractères avant un délimiteur

n°1063250
dams78
développateur
Posté le 30-07-2008 à 11:12:12  profilanswer
 

bonjour,
j'ai un nom de fichier que je voudrai renommer
ce fichier est du style nom-00000-122.000[...]
et biensûr moi je ne veux garder que les permiers caractères présent avant le premier délimiteur '-'
le résultat attendus est donc nom
 
pour ça je pense utiliser sed :
la commande suivante
echo "blabla-0001" | sed 's/\(.*\)-\(.*\)/\1/g' fonctionne, elle renvoi bien blabla
seulement si j'essaye avec
echo "blabla-0001-gggg.ggff" | sed 's/\(.*\)-\(.*\)/\1/g' , elle renvoi blabla-0001
 
merci de votre aide,
j'en profite aussi pour vous demander si vous savez comment faire pour dire que le délimiteur est soit un tiret '-' soit un point '.'

Message cité 1 fois
Message édité par dams78 le 30-07-2008 à 11:30:45

---------------
dam's (debianer), ma galerie Flickr
mood
Publicité
Posté le 30-07-2008 à 11:12:12  profilanswer
 

n°1063265
M300A
Posté le 30-07-2008 à 12:10:53  profilanswer
 

gandalf@scrubs:~$ echo "blabla-0001-gggg.ggff" | sed 's!^\([^-]*\)-.*$!\1!'
blabla


 
C'est surement pas le mieux mais ça marche.
 

n°1063266
M300A
Posté le 30-07-2008 à 12:11:51  profilanswer
 

Au passage
 

gandalf@scrubs:~$ echo "blabla-0001-gggg.ggff" | awk -F'-' '{ print $1 }'
blabla


 
C'est bien plus adapté à ce que t'essaye de faire...

n°1063273
dams78
développateur
Posté le 30-07-2008 à 12:54:44  profilanswer
 

merci, par contre serai t il possible de traiter le cas ou le délimiteur serait un autre caractère (un point) en même temps?


---------------
dam's (debianer), ma galerie Flickr
n°1063294
zecrazytux
Posté le 30-07-2008 à 14:22:55  profilanswer
 

c'est pas plus simple d'utiliser cut ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
n°1063296
dams78
développateur
Posté le 30-07-2008 à 14:28:44  profilanswer
 

zecrazytux a écrit :

c'est pas plus simple d'utiliser cut ?


je ne sais pas, j'avais pensé à sed dès le début c'est pour ça ;)


---------------
dam's (debianer), ma galerie Flickr
n°1063299
franceso
Posté le 30-07-2008 à 14:44:07  profilanswer
 

dams78 a écrit :

seulement si j'essaye avec
echo "blabla-0001-gggg.ggff" | sed 's/\(.*\)-\(.*\)/\1/g' , elle renvoi blabla-0001

Si c'est pour ne garder que le premier champ, j'utiliserais plutôt une regexp dans ce style ; ce sera plus robuste :

~> echo "blabla-0001-gggg.ggff" | sed -e 's/-.*//'
blabla


 
 

dams78 a écrit :

j'en profite aussi pour vous demander si vous savez comment faire pour dire que le délimiteur est soit un tiret '-' soit un point '.'

~> echo "blabla-0001-gggg.ggff" | sed -e 's/[-.].*//'
blabla
~> echo "blabla.0001-gggg.ggff" | sed -e 's/[-.].*//'
blabla



---------------
TriScale innov
n°1063314
dams78
développateur
Posté le 30-07-2008 à 15:26:46  profilanswer
 

en fait j'utilise cette commande :

Code :
  1. echo "$file" | awk -F'-' '{ print $1 }' | awk -F'.' '{ print $1 }'


parceque ta solution franceso ne fonctionne pas si le fichier est par exemple fichier1.0001
 
merci de votre aide

Message cité 1 fois
Message édité par dams78 le 30-07-2008 à 15:26:56

---------------
dam's (debianer), ma galerie Flickr
n°1063317
franceso
Posté le 30-07-2008 à 15:32:24  profilanswer
 

dams78 a écrit :

parceque ta solution franceso ne fonctionne pas si le fichier est par exemple fichier1.0001

> echo fichier1.0001 | sed -e 's/[-.].*//'
fichier1
> echo fichier1.0001 | awk -F'-' '{ print $1 }' | awk -F'.' '{ print $1 }'
fichier1

:??:
 
Je comprends pas trop... qu'est-ce qui ne marche pas avec ma solution ? (non pas que la tienne soit mauvaise, mais pourquoi utiliser deux commandes lorsqu'on peut n'en utiliser qu'une ?)


---------------
TriScale innov
n°1063351
dams78
développateur
Posté le 30-07-2008 à 16:41:39  profilanswer
 

heuuu wé j'ai du me tromper, j'avais peut être mal recopié ta commande ou testé une ancienne, toutes mes excuses ;)


---------------
dam's (debianer), ma galerie Flickr

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

  sed ne garder que les caractères avant un délimiteur

 

Sujets relatifs
[RESOLU] Pb dans une fonction pour retourner une chaine de caracteresProblème Open office et codage des caractères : fichiers bloqués
afficher un fichier mais que sur un certain nombre de caractèresGarder Vista sur Inspiron 1720 ?
Garder boot XP apres install Linux ?[réglé] [sed ou ???] Limiter un fichier à n caracteres par ligne
Locales, Apache2, UTF-8 et caractères mals affichésEmacs, Xemacs, coloration syntaxique et caractères français.
installer ubuntu et garder vista ??? 
Plus de sujets relatifs à : sed ne garder que les caractères avant un délimiteur


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