Filtrage de lignes : grep
La commande grep recherche une chaine de caractères dans un ou plusieurs fichiers textes et affiche à l'écran les lignes contenant cette chaine. La chaine recherchée est matérialisée par une expression régulière basique ERb (défaut) ou étendue ERe grâce à l'option -E.
Syntaxe
grep [options] expreg [fichiers...]
grep [options] -e expreg1 -e expreg2 [fichiers...]
grep [options] -f fichier_expreg [fichiers...]
Principales options :
-c affiche le nombre de lignes trouvées
-e permet de spécifier plusieurs expressions régulières
-E permet d'utiliser les ERe
-f permet de lire les expressions régulières à partir d'un fichier
-F permet de ne pas interpréter le motif de recherche comme une expression régulière
-i permet une recherche insensible à la casse
-l permet de seulement afficher les noms des fichiers contenant l'expression régulière recherchée
-n permet de numéroter les lignes trouvées
-q permet d'effectuer une recherche sans afficher le résultat à l'écran
-v permet une recherche ne contenant pas l'expression régulière
-w l'expression recherchée doit correspondre à un mot entier
-x l'expression recherchée doit correspondre à une ligne entière
-B n Affiche n lignes avant l'expression recherchée (-B pour Before)
-A n Affiche n lignes après l'expression recherchée (-A pour After)
-C n Affiche n lignes avant et après l'expression recherchée
-P permet d'utiliser des regex compatible PERL
Exemple
Utilisation du fichier depts2012.txt pour les exemples
$ cat depts2012.txt
REGION DEP CHEFLIEU TNCC NCC NCCENR
82 01 01053 5 AIN Ain
22 02 02408 5 AISNE Aisne
83 03 03190 5 ALLIER Allier
93 04 04070 4 ALPES-DE-HAUTE-PROVENCE Alpes-de-Haute-Provence
93 05 05061 4 HAUTES-ALPES Hautes-Alpes
93 06 06088 4 ALPES-MARITIMES Alpes-Maritimes
82 07 07186 5 ARDECHE Ardèche
21 08 08105 4 ARDENNES Ardennes
73 09 09122 5 ARIEGE Ariège
21 10 10387 5 AUBE Aube
91 11 11069 5 AUDE Aude
73 12 12202 5 AVEYRON Aveyron
93 13 13055 4 BOUCHES-DU-RHONE Bouches-du-Rhône
25 14 14118 2 CALVADOS Calvados
83 15 15014 2 CANTAL Cantal
54 16 16015 3 CHARENTE Charente
54 17 17300 3 CHARENTE-MARITIME Charente-Maritime
24 18 18033 2 CHER Cher
74 19 19272 3 CORREZE Corrèze
94 2A 2A004 3 CORSE-DU-SUD Corse-du-Sud
94 2B 2B033 3 HAUTE-CORSE Haute-Corse
26 21 21231 3 COTE-D'OR Côte-d'Or
53 22 22278 4 COTES-D'ARMOR Côtes-d'Armor
74 23 23096 3 CREUSE Creuse
72 24 24322 3 DORDOGNE Dordogne
43 25 25056 2 DOUBS Doubs
82 26 26362 3 DROME Drôme
23 27 27229 5 EURE Eure
24 28 28085 1 EURE-ET-LOIR Eure-et-Loir
53 29 29232 2 FINISTERE Finistère
91 30 30189 2 GARD Gard
73 31 31555 3 HAUTE-GARONNE Haute-Garonne
73 32 32013 2 GERS Gers
72 33 33063 3 GIRONDE Gironde
91 34 34172 5 HERAULT Hérault
53 35 35238 1 ILLE-ET-VILAINE Ille-et-Vilaine
24 36 36044 5 INDRE Indre
24 37 37261 1 INDRE-ET-LOIRE Indre-et-Loire
82 38 38185 5 ISERE Isère
43 39 39300 2 JURA Jura
72 40 40192 4 LANDES Landes
24 41 41018 0 LOIR-ET-CHER Loir-et-Cher
82 42 42218 3 LOIRE Loire
83 43 43157 3 HAUTE-LOIRE Haute-Loire
52 44 44109 3 LOIRE-ATLANTIQUE Loire-Atlantique
24 45 45234 2 LOIRET Loiret
73 46 46042 2 LOT Lot
72 47 47001 0 LOT-ET-GARONNE Lot-et-Garonne
91 48 48095 3 LOZERE Lozère
52 49 49007 0 MAINE-ET-LOIRE Maine-et-Loire
25 50 50502 3 MANCHE Manche
21 51 51108 3 MARNE Marne
21 52 52121 3 HAUTE-MARNE Haute-Marne
52 53 53130 3 MAYENNE Mayenne
41 54 54395 0 MEURTHE-ET-MOSELLE Meurthe-et-Moselle
41 55 55029 3 MEUSE Meuse
53 56 56260 2 MORBIHAN Morbihan
41 57 57463 3 MOSELLE Moselle
26 58 58194 3 NIEVRE Nièvre
31 59 59350 2 NORD Nord
22 60 60057 5 OISE Oise
25 61 61001 5 ORNE Orne
31 62 62041 2 PAS-DE-CALAIS Pas-de-Calais
83 63 63113 2 PUY-DE-DOME Puy-de-Dôme
72 64 64445 4 PYRENEES-ATLANTIQUES Pyrénées-Atlantiques
73 65 65440 4 HAUTES-PYRENEES Hautes-Pyrénées
91 66 66136 4 PYRENEES-ORIENTALES Pyrénées-Orientales
42 67 67482 2 BAS-RHIN Bas-Rhin
42 68 68066 2 HAUT-RHIN Haut-Rhin
82 69 69123 2 RHONE Rhône
43 70 70550 3 HAUTE-SAONE Haute-Saône
26 71 71270 0 SAONE-ET-LOIRE Saône-et-Loire
52 72 72181 3 SARTHE Sarthe
82 73 73065 3 SAVOIE Savoie
82 74 74010 3 HAUTE-SAVOIE Haute-Savoie
11 75 75056 0 PARIS Paris
23 76 76540 3 SEINE-MARITIME Seine-Maritime
11 77 77288 0 SEINE-ET-MARNE Seine-et-Marne
11 78 78646 4 YVELINES Yvelines
54 79 79191 4 DEUX-SEVRES Deux-Sèvres
22 80 80021 3 SOMME Somme
73 81 81004 2 TARN Tarn
73 82 82121 0 TARN-ET-GARONNE Tarn-et-Garonne
93 83 83137 2 VAR Var
93 84 84007 0 VAUCLUSE Vaucluse
52 85 85191 3 VENDEE Vendée
54 86 86194 3 VIENNE Vienne
74 87 87085 3 HAUTE-VIENNE Haute-Vienne
41 88 88160 4 VOSGES Vosges
26 89 89024 5 YONNE Yonne
43 90 90010 0 TERRITOIRE_DE_BELFORT Territoire de Belfort
11 91 91228 5 ESSONNE Essonne
11 92 92050 4 HAUTS-DE-SEINE Hauts-de-Seine
11 93 93008 3 SEINE-SAINT-DENIS Seine-Saint-Denis
11 94 94028 2 VAL-DE-MARNE Val-de-Marne
11 95 95500 2 VAL-D'OISE Val-d'Oise
01 971 97105 3 GUADELOUPE Guadeloupe
02 972 97209 3 MARTINIQUE Martinique
03 973 97302 3 GUYANE Guyane
04 974 97411 0 LA_REUNION La Réunion
06 976 97608 0 MAYOTTE Mayotte
$
Afficher la ligne contenant 85191
$ grep 85191 depts2012.txt
52 85 85191 3 VENDEE Vendée
$
Utilisation d'une ERe et d'une recherche insensible à la casse
$ grep -E -i '(paris|vosges)' depts2012.txt
11 75 75056 0 PARIS Paris
41 88 88160 4 VOSGES Vosges
$
Afficher les lignes ne commençant pas par le chiffre 9
$ grep -v '^9' depts2012.txt
REGION DEP CHEFLIEU TNCC NCC NCCENR
82 01 01053 5 AIN Ain
22 02 02408 5 AISNE Aisne
83 03 03190 5 ALLIER Allier
82 07 07186 5 ARDECHE Ardèche
21 08 08105 4 ARDENNES Ardennes
73 09 09122 5 ARIEGE Ariège
21 10 10387 5 AUBE Aube
73 12 12202 5 AVEYRON Aveyron
25 14 14118 2 CALVADOS Calvados
83 15 15014 2 CANTAL Cantal
54 16 16015 3 CHARENTE Charente
54 17 17300 3 CHARENTE-MARITIME Charente-Maritime
24 18 18033 2 CHER Cher
74 19 19272 3 CORREZE Corrèze
26 21 21231 3 COTE-D'OR Côte-d'Or
53 22 22278 4 COTES-D'ARMOR Côtes-d'Armor
74 23 23096 3 CREUSE Creuse
72 24 24322 3 DORDOGNE Dordogne
43 25 25056 2 DOUBS Doubs
82 26 26362 3 DROME Drôme
23 27 27229 5 EURE Eure
24 28 28085 1 EURE-ET-LOIR Eure-et-Loir
53 29 29232 2 FINISTERE Finistère
73 31 31555 3 HAUTE-GARONNE Haute-Garonne
73 32 32013 2 GERS Gers
72 33 33063 3 GIRONDE Gironde
53 35 35238 1 ILLE-ET-VILAINE Ille-et-Vilaine
24 36 36044 5 INDRE Indre
24 37 37261 1 INDRE-ET-LOIRE Indre-et-Loire
82 38 38185 5 ISERE Isère
43 39 39300 2 JURA Jura
72 40 40192 4 LANDES Landes
24 41 41018 0 LOIR-ET-CHER Loir-et-Cher
82 42 42218 3 LOIRE Loire
83 43 43157 3 HAUTE-LOIRE Haute-Loire
52 44 44109 3 LOIRE-ATLANTIQUE Loire-Atlantique
24 45 45234 2 LOIRET Loiret
73 46 46042 2 LOT Lot
72 47 47001 0 LOT-ET-GARONNE Lot-et-Garonne
52 49 49007 0 MAINE-ET-LOIRE Maine-et-Loire
25 50 50502 3 MANCHE Manche
21 51 51108 3 MARNE Marne
21 52 52121 3 HAUTE-MARNE Haute-Marne
52 53 53130 3 MAYENNE Mayenne
41 54 54395 0 MEURTHE-ET-MOSELLE Meurthe-et-Moselle
41 55 55029 3 MEUSE Meuse
53 56 56260 2 MORBIHAN Morbihan
41 57 57463 3 MOSELLE Moselle
26 58 58194 3 NIEVRE Nièvre
31 59 59350 2 NORD Nord
22 60 60057 5 OISE Oise
25 61 61001 5 ORNE Orne
31 62 62041 2 PAS-DE-CALAIS Pas-de-Calais
83 63 63113 2 PUY-DE-DOME Puy-de-Dôme
72 64 64445 4 PYRENEES-ATLANTIQUES Pyrénées-Atlantiques
73 65 65440 4 HAUTES-PYRENEES Hautes-Pyrénées
42 67 67482 2 BAS-RHIN Bas-Rhin
42 68 68066 2 HAUT-RHIN Haut-Rhin
82 69 69123 2 RHONE Rhône
43 70 70550 3 HAUTE-SAONE Haute-Saône
26 71 71270 0 SAONE-ET-LOIRE Saône-et-Loire
52 72 72181 3 SARTHE Sarthe
82 73 73065 3 SAVOIE Savoie
82 74 74010 3 HAUTE-SAVOIE Haute-Savoie
11 75 75056 0 PARIS Paris
23 76 76540 3 SEINE-MARITIME Seine-Maritime
11 77 77288 0 SEINE-ET-MARNE Seine-et-Marne
11 78 78646 4 YVELINES Yvelines
54 79 79191 4 DEUX-SEVRES Deux-Sèvres
22 80 80021 3 SOMME Somme
73 81 81004 2 TARN Tarn
73 82 82121 0 TARN-ET-GARONNE Tarn-et-Garonne
52 85 85191 3 VENDEE Vendée
54 86 86194 3 VIENNE Vienne
74 87 87085 3 HAUTE-VIENNE Haute-Vienne
41 88 88160 4 VOSGES Vosges
26 89 89024 5 YONNE Yonne
43 90 90010 0 TERRITOIRE_DE_BELFORT Territoire de Belfort
11 91 91228 5 ESSONNE Essonne
11 92 92050 4 HAUTS-DE-SEINE Hauts-de-Seine
11 93 93008 3 SEINE-SAINT-DENIS Seine-Saint-Denis
11 94 94028 2 VAL-DE-MARNE Val-de-Marne
11 95 95500 2 VAL-D'OISE Val-d'Oise
01 971 97105 3 GUADELOUPE Guadeloupe
02 972 97209 3 MARTINIQUE Martinique
03 973 97302 3 GUYANE Guyane
04 974 97411 0 LA_REUNION La Réunion
06 976 97608 0 MAYOTTE Mayotte
$
Afficher les lignes commençant par un 0 ou se terminant par un s
$ grep -e '^0' -e 's$' depts2012.txt
93 05 05061 4 HAUTES-ALPES Hautes-Alpes
93 06 06088 4 ALPES-MARITIMES Alpes-Maritimes
21 08 08105 4 ARDENNES Ardennes
25 14 14118 2 CALVADOS Calvados
43 25 25056 2 DOUBS Doubs
73 32 32013 2 GERS Gers
72 40 40192 4 LANDES Landes
31 62 62041 2 PAS-DE-CALAIS Pas-de-Calais
72 64 64445 4 PYRENEES-ATLANTIQUES Pyrénées-Atlantiques
73 65 65440 4 HAUTES-PYRENEES Hautes-Pyrénées
91 66 66136 4 PYRENEES-ORIENTALES Pyrénées-Orientales
11 75 75056 0 PARIS Paris
11 78 78646 4 YVELINES Yvelines
54 79 79191 4 DEUX-SEVRES Deux-Sèvres
41 88 88160 4 VOSGES Vosges
11 93 93008 3 SEINE-SAINT-DENIS Seine-Saint-Denis
01 971 97105 3 GUADELOUPE Guadeloupe
02 972 97209 3 MARTINIQUE Martinique
03 973 97302 3 GUYANE Guyane
04 974 97411 0 LA_REUNION La Réunion
06 976 97608 0 MAYOTTE Mayotte
$
Afficher et numéroter les lignes commençant par 11
$ grep -n '^11' depts2012.txt
77:11 75 75056 0 PARIS Paris
79:11 77 77288 0 SEINE-ET-MARNE Seine-et-Marne
80:11 78 78646 4 YVELINES Yvelines
93:11 91 91228 5 ESSONNE Essonne
94:11 92 92050 4 HAUTS-DE-SEINE Hauts-de-Seine
95:11 93 93008 3 SEINE-SAINT-DENIS Seine-Saint-Denis
96:11 94 94028 2 VAL-DE-MARNE Val-de-Marne
97:11 95 95500 2 VAL-D'OISE Val-d'Oise
$
Effectuer une recherche sans afficher le résultat. Afficher le code de retour de la commande pour vérifier l'état de la recherche.
$ grep -q '^11' depts2012.txt
$ echo $?
0
$
Afficher seulement le nombre de lignes trouvées
$ grep -c -e '^0' -e 's$' depts2012.txt
21
$
Rechercher un mot exact
$ grep COTE depts2012.txt # Sans l'option -w 2 lignes sont affichées
26 21 21231 3 COTE-D'OR Côte-d'Or
53 22 22278 4 COTES-D'ARMOR Côtes-d'Armor
$ grep -w COTE depts2012.txt # Avec l'option -w seule la ligne contenant le mot COTE s'affiche
26 21 21231 3 COTE-D'OR Côte-d'Or
$
Afficher les lignes contenant au moins 2 caractères. Utilisation du fichier fic7 en exemple.
$ cat fic7
erytert
e
er
..
uhy
2
e_
34
546
$ grep '..' fic7
erytert
er
..
uhy
e_
34
546
$
Ne pas interpréter le motif comme une expression régulière.
$ grep -F '..' fic7
..
$
Rechercher les lignes ne contenant que des chiffres. Utilisation d'une ERe.
$ grep -E '^[0-9]+$' << EOF # Sans l'option -x
5
455788
456 657588
elrerioyuerioy
sdgjhg4547457
56456456dgldkgdlfg
EOF
5
455788
$ grep -x -E '[0-9]+' << EOF # Avec l'option -x
5
455788
456 657588
elrerioyuerioy
sdgjhg4547457
56456456dgldkgdlfg
EOF
5
455788
Utiliser un fichier pour rechercher les expressions régulières
$ cat rech.er
# Rechercher les lignes se terminant par la lettre t
t$
# Rechercher les lignes contenant uniquement des chiffres
^[0-9]+$
$ grep -E -f rech.er fic7
erytert
2
34
546
$
Utiliser grep derrière un tube pour rechercher un processus particulier.
$ ps -ef | grep apache2
root 302 1 0 06:18 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 351 302 0 06:18 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 352 302 0 06:18 ? 00:00:00 /usr/sbin/apache2 -k start
root 3783 3105 0 14:10 pts/0 00:00:00 grep --color=always apache2
$
Dans ce cas, la commande grep apparait également. L'utilisation de 2 tubes est donc nécessaire.
$ ps -ef | grep apache2 | grep -v grep # On demande à grep de ne pas afficher "grep"
root 302 1 0 06:18 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 351 302 0 06:18 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 352 302 0 06:18 ? 00:00:00 /usr/sbin/apache2 -k start
$
Afficher les 3 lignes précédant le mot "rose"
$ grep -B 3 rose << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
$
Afficher les 3 lignes suivant le mot "rose"
$ grep -A 3 rose << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
$
Afficher 1 ligne avant et après le mot "rose"
$ grep -C 1 rose << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
$
Exemple d'utilisation avec l'option -P (regex compatible PERL)
Dans le texte suivant, le mot "nécessaire" existe 2 fois
$ grep nécessaire << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Angoisse soulever aventure nécessaire sans installer plante.
Inutile rose nombre nécessaire président en robe.
Recherche du mot "nécessaire" uniquement s'il est précédé du mot "nombre"
$ grep -P '(?<=nombre) nécessaire' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Inutile rose nombre nécessaire président en robe.
Recherche du mot "nécessaire" uniquement s'il est suivi du mot "sans"
$ grep -P 'nécessaire (?=sans)' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Angoisse soulever aventure nécessaire sans installer plante.
Recherche du mot "nécessaire" uniquement s'il n'est pas suivi du mot "sans"
$ grep -P 'nécessaire (?!sans)' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Inutile rose nombre nécessaire président en robe.
Recherche du mot "nécessaire" uniquement s'il n'est pas précédé du mot "nombre"
$ grep -P '(?<!nombre) nécessaire' << EOF
Pont entier étroit composer détacher politique terrain.
Angoisse soulever aventure nécessaire sans installer plante.
Plante protéger prochain sentir paysage.
Pierre fort façon loin relation.
Saint accent hasard franchir.
Inutile rose nombre nécessaire président en robe.
Entre mener semaine déposer atteindre professeur rentrer.
Terrible choisir loi subir oser.
Sonner expliquer conduire soldat.
Étendue profond table beau chose.
EOF
Angoisse soulever aventure nécessaire sans installer plante.
Commentaires
david (non vérifié)
mar, 20/11/2018 - 20:00
Permalien
je n'y arrive pas....
Bonjour,
J'ai besoin de réaliser ceci:
Rechercher uniquement le nom des fichiers:
-parmi une liste de fichiers (disons tous ceux dont le nom commence par "sma")
-ceux qui contiennent une chaine du genre "la date de la veille au format "2018/21/08" suivi de " tata" par exemple "2018/11/18 tata"
- mais également ceux (qui ne respectent pas la condition précédente) qui contiennent simplement "toto"
donc pour la première liste j'ai :
grep -l $(date -d $(expr `date +%Y%m%d` - 1) +%Y/%m/%d)" tata" sma*.*
pour la seconde j'ai:
grep "toto" sma*.*
mais je n'arrive pas à faire un 'OR' qui prenne en compte les deux.... frustrant !
Bises
ronan
mer, 21/11/2018 - 11:10
Permalien
Bonjour,
Si j'ai bien compris, ceci devrait faire l'affaire
$ grep -l -e 'toto' -e "$(date -d $(expr `date +%Y%m%d` - 1) +%Y/%m/%d" tata")" sma*.*
Bonne journée
Tester (non vérifié)
sam, 27/04/2024 - 01:54
Permalien
recherche caractère spéciaux
Bonjour,
Comment puis-je rechercher dans un fichier "test.lst" les lignes contenant 2 fois minimum le caractère special "|" (pipe) ?
J'ai beau chercher... je ne trouve pas :s
Merci pour votre aide
ronan
sam, 27/04/2024 - 09:37
Permalien
recherche caractères spéciaux
Bonjour,
La commande suivante permet d'extraire toutes les lignes dans le fichier test.lst ayant au minimum deux "|" (pipe) consécutifs.
Le caractère "|" (pipe) étant un caractère réservé dans les expressions régulières, il est nécessaire de l'échaper en le précédant du caractère "\" (antislash).
Pour indiquer que nous souhaitons au minimum 2 caractères consécutifs, il faut indiquer un quantifieur indiquant un minimum de 2 représenté par "{2,}".
Si l'on souhaite indiquer également un maximum de 3 (par exemple) on indique "{2,3}".
Bonne journée
Tester (non vérifié)
dim, 28/04/2024 - 15:55
Permalien
Merci pour ton aide Ronan.
Merci pour ton aide Ronan.
Toutefois, cela ne réponds pas tout à fait à ma recherche.
En effet, je recherche les lignes contenant 2 fois le caractère "pipe" qu'il soit consécutif ou non.
Dans mon cas précis, la commande ne retournera aucun résultat car les pipes sont espacés par des mots, des ponctuations ou encore d'autres caracères spéciaux ("?" "..." par exemple).
Merci encore à toi pour ton aide
ronan
dim, 28/04/2024 - 18:41
Permalien
recherche caractères spéciaux
Dans ce cas, cette regex devrait correspondre à ton besoin
Il est nécessaire d'utiliser une regex compatible PERL afin d'utiliser, ce qu'on appelle, une assertion "lookahead" (?=.+?\|)
Tester (non vérifié)
lun, 29/04/2024 - 22:31
Permalien
C'est parfait !
C'est parfait !
(pas super intuitive :) )
Merci à toi ;)
Tester (non vérifié)
lun, 29/04/2024 - 23:08
Permalien
Encore une petite question...
Encore une petite question...
Tu l'auras compris, je fais du tri dans un fichier. Dans ce but, j'ai supprimé la majeure partie des entrées en doublon. (celles rigoureusement identiques)
Toutefois, il subsiste des lignes presque identiques où seul un caractère ou deux diffère (un espacement, le plus souvent)
Il y aurait-il une commande permettant de ressortir les lignes ayant les 5 ou 10 premiers mots identiques ?
Merci encore à toi pour ton aide !
ronan
mar, 30/04/2024 - 10:52
Permalien
Avec AWK
Tu peux utiliser AWK de cette manière
La variable "b" est initialisée avec les 5 premières valeurs de la ligne du fichier
On ajoute au tableau "a", indicé par la clé "b" le numéro de la ligne en cours de traitement (séparé par un espace)
Dans le bloc "END", on affiche pour chaque clé du tableau "a" la liste des valeurs correspondantes
Tester (non vérifié)
mar, 30/04/2024 - 13:16
Permalien
Merci à toi c'est parfait
Merci à toi c'est parfait
Ajouter un commentaire