OVH Cloud OVH Cloud

Sed : P'tit soucis

5 réponses
Avatar
AsusI
Salut,

J'ai un répertoire avec dedans x fichiers qui sont de la forme :

monfichier.1.bz2
monfichier2.5.bz2
monfichier3.3.bz2
etc...

Je veux lister le dossier pour récupérer le nom des fichiers et afficher
le résultat à l'écran, le nom modifié.
En gros je veux passer de "monfichier.1.bz2" à "monfichier".

Pour celà , j'ai voulu utiliser ceci qui me semblait logique...
---------------------------------------------
$ echo monfichier.1.bz2 | sed -e 's/.*//g'
---------------------------------------------

Je passe à sed le résultat d'echo et je lui dis que tous ce qui vient
après le premier point (.), il doit le remplacer par rien du tout.

Le résultat que je voulais obtenir de la commande ci-dessus était :
---------------------
$ monfichier
---------------------
Le problème c'est que sed, n'aime pas du tout et ne me retourne aucun
résultat.

C'est où que je me trompe ????
Si vous avez des pistes ;)

Merci,
AsusI

5 réponses

Avatar
Pascal Bourguignon
AsusI writes:

Salut,

J'ai un répertoire avec dedans x fichiers qui sont de la forme :

monfichier.1.bz2
monfichier2.5.bz2
monfichier3.3.bz2
etc...

Je veux lister le dossier pour récupérer le nom des fichiers et
afficher le résultat à l'écran, le nom modifié.
En gros je veux passer de "monfichier.1.bz2" à "monfichier".

Pour celà , j'ai voulu utiliser ceci qui me semblait logique...
---------------------------------------------
$ echo monfichier.1.bz2 | sed -e 's/.*//g'
---------------------------------------------

Je passe à sed le résultat d'echo et je lui dis que tous ce qui vient
après le premier point (.), il doit le remplacer par rien du tout.


man sed
man 7 regex

. ne veut pas dire .
. veut dire n'importe quel caractère.

Le résultat que je voulais obtenir de la commande ci-dessus était :
---------------------
$ monfichier
---------------------
Le problème c'est que sed, n'aime pas du tout et ne me retourne aucun
résultat.


Si il aime bien sed, qu'on lui dise d'identifier n'importe quel
caractère: ça lui facilite la vie, il n'y a aucun test à faire.

C'est où que je me trompe ????
Si vous avez des pistes ;)


L'erreur est de ne pas lire les manuels. En particulier, quand un lit
une page man, faut pas faire le cancre branleur faignant, on n'est
plus au collège! Faut aussi lire toutes les pages de manuel citées
dans la section SEE ALSO:

SEE ALSO
awk(1), ed(1), expr(1), emacs(1), perl(1), tr(1), vi(1),
regex(7), sed.info, any of various books on sed, the sed FAQ
(http://www.cornerstonemag.com/sed/sedfaq.html),
http://seders.icheme.org/.

--
__Pascal Bourguignon__ http://www.informatimago.com/
I need a new toy.
Tail of black dog keeps good time.
Pounce! Good dog! Good dog!

Avatar
DINH Viêt Hoà

Pour celà , j'ai voulu utiliser ceci qui me semblait logique...
---------------------------------------------
$ echo monfichier.1.bz2 | sed -e 's/.*//g'
---------------------------------------------


sed -e 's/^([^.]*)..*$/1/'

lire la page de man comme dit Pascal.
(Il a répondu à la vitesse turbo !)

--
DINH V. Hoa,

"tu as bientot 15 ans, faut que tu commences à être autonome" -- jul

Avatar
AsusI

L'erreur est de ne pas lire les manuels. En particulier, quand un lit
une page man, faut pas faire le cancre branleur faignant, on n'est
plus au collège! Faut aussi lire toutes les pages de manuel citées
dans la section SEE ALSO:



Pauvre tache !!!
Et ta mère elle les lit les man ????

Lis en autant que moi (et surtout traduis en autant que moi) et après tu
viendra fanfaronner avec ton air béliqueux et moraliste comme tu le fais.

Ma réponse est à hauteur de ta contribution, très intelligente, qui fais
avancer les choses....

Franchement BRAVO !

Avatar
DINH Viêt Hoà


L'erreur est de ne pas lire les manuels. En particulier, quand un lit
une page man, faut pas faire le cancre branleur faignant, on n'est
plus au collège! Faut aussi lire toutes les pages de manuel citées
dans la section SEE ALSO:



Pauvre tache !!!
Et ta mère elle les lit les man ????


Ah ben bravo !
en même temps, tu postes de façon anonyme, tu ne risques rien.

--
DINH V. Hoa,

"tu as bientot 15 ans, faut que tu commences à être autonome" -- jul


Avatar
Stephane Chazelas
2004-12-19, 14:36(+01), AsusI:
[...]
Pour celà , j'ai voulu utiliser ceci qui me semblait logique...
---------------------------------------------
$ echo monfichier.1.bz2 | sed -e 's/.*//g'
---------------------------------------------


f=monfichier.1.bz2
printf '%sn' "${f%%.*}"

expr "x$f" : 'x([^.]*)'

[...]
C'est où que je me trompe ????
[...]


Tu confonds fnmatch et regex.

--
Stephane