sed ne garder que les caractères avant un délimiteur - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 30-07-2008 à 12:10:53
gandalf@scrubs:~$ echo "blabla-0001-gggg.ggff" | sed 's!^\([^-]*\)-.*$!\1!' |
C'est surement pas le mieux mais ça marche.
Marsh Posté le 30-07-2008 à 12:11:51
Au passage
gandalf@scrubs:~$ echo "blabla-0001-gggg.ggff" | awk -F'-' '{ print $1 }' |
C'est bien plus adapté à ce que t'essaye de faire...
Marsh Posté le 30-07-2008 à 12:54:44
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?
Marsh Posté le 30-07-2008 à 14:22:55
c'est pas plus simple d'utiliser cut ?
Marsh Posté le 30-07-2008 à 14:28:44
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
Marsh Posté le 30-07-2008 à 14:44:07
dams78 a écrit : seulement si j'essaye avec |
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/-.*//' |
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/[-.].*//' |
Marsh Posté le 30-07-2008 à 15:26:46
en fait j'utilise cette commande :
Code :
|
parceque ta solution franceso ne fonctionne pas si le fichier est par exemple fichier1.0001
merci de votre aide
Marsh Posté le 30-07-2008 à 15:32:24
dams78 a écrit : parceque ta solution franceso ne fonctionne pas si le fichier est par exemple fichier1.0001 |
> echo fichier1.0001 | sed -e 's/[-.].*//' |
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 ?)
Marsh Posté le 30-07-2008 à 16:41:39
heuuu wé j'ai du me tromper, j'avais peut être mal recopié ta commande ou testé une ancienne, toutes mes excuses
Marsh Posté le 30-07-2008 à 11:12:12
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 édité par dams78 le 30-07-2008 à 11:30:45
---------------
dam's (debianer), ma galerie Flickr