#1 Le 14/04/2021, à 11:19
- ar barzh paour
[Résolu] recherche par grep ne fonctionne pas ?
hello bonkour à tous
je ne comprends pas ce qui se passe , j'effectue une recherche de phrases se terminant par kol (par exemple)
exemple ( fichier créé pour le test)
cat test_grep.txt
ligne1 skol
ligne2 kol
skol ligne3
OK il me trouve bien les 2 lignes concernées
var ="kol"
grep -iE "$var$" test_grep.txt
ligne1 skol
ligne2 kol
maintenant
j'ai le fichier réel "liste.txt"
grep -iE "kol$" liste.txt
rien , pas de résultat , même sans utiliser $var
et pourtant plusieurs lignes se terminent par "kol"
cat liste.txt|grep "kol"
462;Er sizhun-mañ emañ an distro-skol
613;Ni a c'hoari kanetennoù a-wezhioù er porzh-skol
619;Bemdez ez aomp d'ar skol
je ne vois pas où est mon erreur
Résolu : du au format du fichier liste.txt (voir les posts ci-dessous)
Dernière modification par ar barzh paour (Le 14/04/2021, à 14:22)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 14/04/2021, à 11:25
- Watael
Re : [Résolu] recherche par grep ne fonctionne pas ?
liste.txt vient de W$ ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 14/04/2021, à 13:39
- ar barzh paour
Re : [Résolu] recherche par grep ne fonctionne pas ?
hello Watael
non pas W$ mais d'un find , il faudrait que je retrouve la commande que j'ai utilisée , c'est assez vieux
liste.txt est la concaténation des premières lignes d'autres fichiers texte
W$ m'a fait effectivement penser à un problème de format de fichier
et bingo je pense
pour le fichier test , la fin de ligne est 0a
000000 6c 69 67 6e 65 31 20 73 6b 6f 6c 0a 6c 69 67 6e >ligne1 skol.lign<
000010 65 32 20 6b 6f 6c 0a 73 6b 6f 6c 20 6c 69 67 6e >e2 kol.skol lign<
000020 65 33 0a >e3.<
pour liste.txt , c'est 0d 0a
extrait de
cat liste.txt|od -A x -t x1z -v
004780 67 2e 0d 0a 34 36 32 3b 45 72 20 73 69 7a 68 75 >g...462;Er sizhu<
004790 6e 2d 6d 61 c3 b1 20 65 6d 61 c3 b1 20 61 6e 20 >n-ma.. ema.. an <
0047a0 64 69 73 74 72 6f 2d 73 6b 6f 6c 0d 0a 34 36 33 >distro-skol..463<
il me reste à transformer les 0d 0a en 0a
Dernière modification par ar barzh paour (Le 14/04/2021, à 13:41)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#4 Le 14/04/2021, à 14:03
- Watael
Re : [Résolu] recherche par grep ne fonctionne pas ?
c'est des "retours chariot" W$ => dos2unix, ou
sed -i 's/^M//' liste.txt
où ^M est obtenu avec Ctrl-V Enter
Dernière modification par Watael (Le 14/04/2021, à 14:16)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 14/04/2021, à 14:12
- ar barzh paour
Re : [Résolu] recherche par grep ne fonctionne pas ?
ok Watael merci pour la commande ,
et je viens de vérifier , ce sont les fichiers "sources" qui sont en cause , ce sont eux qui contiennent les 0d0a
quand j'ai fait la récupération des premières lignes je n'y ait pas prêté attention
avec la commande passée , grep fonctionne impeccable
question annexe
si je n'avais pas modifié le fichier liste.txt il aurait étré possible d'effectuer une recherche par kol suivi ou non de x0d
grep -iE kol^M*$ aurait été bon ?
Dernière modification par ar barzh paour (Le 14/04/2021, à 14:20)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne