Grep sur une ligne en renvoie plusieurs...Pourquoi?
Résolu/Fermé
A voir également:
- Grep sur une ligne en renvoie plusieurs...Pourquoi?
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Comment aller à la ligne sur excel - Guide
- Find grep ✓ - Forum Linux / Unix
- Renvoie d'appel ooredoo - Forum Samsung
2 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
7 avril 2014 à 09:31
7 avril 2014 à 09:31
Salut,
Exemple :
Sinon.
C'est quoi ton système ? Parce que même avec ta syntaxe, chez moi ça marche ;-\
mais je pensais que grep fonctionnait par ligne (par défaut) et donc s'arrêtait après avoir "matché" un résultat.Non, pour ça il y a l'option
-m x, où x est le nombre d'occurrence à matcher.
Exemple :
$ echo -e "Tralala\nTrololo\nlala\ntralalère" | grep -n 'la'
1:Tralala
3:lala
4:tralalère
$ echo -e "Tralala\nTrololo\nlala\ntralalère" | grep -n -m 1 'la'
1:Tralala
$ echo -e "Tralala\nTrololo\nlala\ntralalère" | grep -n -m 2 'la'
1:Tralala
3:lala
Sinon.
$ echo "${A}"
server.log.2014-564-52.s5.sfg.sdf
$ grep -o '^[^.]*\.[^.]*' <<<${A}
server.log
C'est quoi ton système ? Parce que même avec ta syntaxe, chez moi ça marche ;-\
$ grep -o '^[^\.]*\....' <<<${A}
server.log
Je suis en Centos 5
Dans tes exemples tu fais un grep sur plusieurs lignes (echo -e ....\n....\n...) donc on a bien un résultat par ligne, pas plusieurs comme dans mon exemple.
Pas mieux :-( même avec un -m 1
Dans tes exemples tu fais un grep sur plusieurs lignes (echo -e ....\n....\n...) donc on a bien un résultat par ligne, pas plusieurs comme dans mon exemple.
[me] $ uname -a
Linux localhost 2.6.18-164.15.1.el5 #1 SMP Wed Mar 17 11:37:14 EDT 2010 i686 athlon i386 GNU/Linux
-(lun avr 07 10:01:33)--(localhost:~)-
[me] $ A="server.log.2014-564-52.s5.sfg.sdf"
-(lun avr 07 10:01:38)--(localhost:~)-
[me] $ echo ${A}
server.log.2014-564-52.s5.sfg.sdf
-(lun avr 07 10:01:46)--(localhost:~)-
[me] $ grep -o '^[^\.]*\....' <<<${A}
server.log
.201
4-564-52.s5.
sfg.sdf
-(lun avr 07 10:02:13)--(localhost:~)-
[me] $ grep -o '^[^\.]*\.[^.]*' <<<${A}
server.log
.2014-564-52
.s5
.sfg
.sdf
-(lun avr 07 10:02:42)--(localhost:~)-
[me] $ grep --version
grep (grep de GNU) 2.5.1
Pas mieux :-( même avec un -m 1
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
7 avril 2014 à 11:09
7 avril 2014 à 11:09
Dans tes exemples tu fais un grep sur plusieurs lignesDans tes exemples tu fais un grep sur plusieurs lignesOups effectivement, le
-mne marche que sur les lignes et non les occurrences ;-[
Par contre, chez moi, avec ton exemple, j'ai bien qu'une seule occurrence qui sort ;-\
$ A='server.log.2014-564-52.s5.sfg.sdf'
$ grep -o '^[^.]*\.[^.]*' <<<${A}
server.log
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
7 avril 2014 à 11:11
7 avril 2014 à 11:11
Sinon essaye avec
sed:
$ sed 's/^\([^.]*\.[^.]*\).*/\1/' <<<${A}
server.log