#1 Le 23/08/2022, à 23:18
- VroumH
grep d'une ligne avec un chiffre précie
Bonjour,
Qeuestion super bête mais je suis en train de m'arracher les cheveux
Comment vous faites pour faire un grep de la ligne 1 et non de la ligne 11
-----+------------+----------+----------
1 -7.816 0 0
2 -7.715 0.964 3.337
7 -7.432 1.667 3.675
8 -7.365 1.274 2.119
9 -7.356 1.235 5.45
10 -7.332 2.188 4.407
11 -7.206 2.152 5.536
12 -7.098 2.175 5.313
13 -6.913 1.699 4.041
14 -6.769 1.22 4.305
j'ai essayé :
grep '^1 ' fichier
grep -Eo "^1+[[:space:]]" fichier
grep "\^1 " fichier
grep "^[0-9]\{1,\}" fichier
grep .{1,} fichier
Hors ligne
#2 Le 24/08/2022, à 00:12
- Vobul
Re : grep d'une ligne avec un chiffre précie
grep ' 1 ' fichier
Avec un espace devant et derrière donc. Mais bon tu ferais mieux de transformer ça en csv puis d'utiliser un truc pratique genre pandas ou R pour faire ce que t'as à faire dessus.
L'approche avec le ^ ne fonctionne pas car t'as des whitespaces en début de ligne, donc il peut pas matcher. Tu peux les enlever avec :
sed -e 's/^ *//'
, ce qui te permet ensuite de matcher sur "^1 ", ce qui peut limiter le risque de faux positif. Si tu te retrouves avec un 1 dans tes colonnes.
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#3 Le 24/08/2022, à 01:24
- Watael
Re : grep d'une ligne avec un chiffre précie
le copier/coller du fichier montre trois espaces après le début de la ligne et avant le 1, mais ce nombre varie avec les nombres à deux chiffres, et probablement avec ceux à trois chiffres Et qu'arrivera-t-il quand les nombres auront plus de trois chiffres ?
je considère donc qu'on ne peut pas être certain du nombre d'espaces qui précède les nombres :
grep '^\s*1\s\+'
je traduis:
au début de ligne
un, plusieurs, ou aucun espace
un 1
un ou plusieurs espaces.
mais... on n'a pas déjà eu cette conversation ?
Dernière modification par Watael (Le 25/08/2022, à 14:29)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#4 Le 24/08/2022, à 05:28
- Tawal
Re : grep d'une ligne avec un chiffre précie
Hello,
Il manque la dernière apostrophe et l'option -E, donc plutôt :
grep -E '^\s*1\s+' fichier_à_traiter
Dernière modification par Tawal (Le 24/08/2022, à 05:28)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#5 Le 24/08/2022, à 10:37
- Watael
Re : grep d'une ligne avec un chiffre précie
ok pour l'apostrophe; je corrige.
pas ok pour l'option -E : le + est "protégé" pour qu'il soit interprété en tant que regex.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#6 Le 24/08/2022, à 15:38
- gigiair
Re : grep d'une ligne avec un chiffre précie
grep -e "^ *1\>" fichier
ou
grep -e "^ *1\b" fichier
--
JJR.
Hors ligne
#7 Le 24/08/2022, à 16:47
- Tawal
Re : grep d'une ligne avec un chiffre précie
pas ok pour l'option -E : le + est "protégé" pour qu'il soit interprété en tant que regex.
Je veux bien te croire.
Mais bizarrement, sans l'option -E, ça ne fonctionne pas chez moi.
Edit:
$ grep '^\s*1\s+' fic
$ grep '^\s*1\s\+' fic
1 -7.816 0 0
$
Comme ça, c'est bon
J'avais oublié de protéger le +.
Dernière modification par Tawal (Le 24/08/2022, à 16:50)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#8 Le 25/08/2022, à 14:26
- VroumH
Re : grep d'une ligne avec un chiffre précie
Merci beaucoup ! Je vais pouvoir garder mes cheveux
Hors ligne
#9 Le 28/08/2022, à 14:28
- LeoMajor
Re : grep d'une ligne avec un chiffre précie
un truc facile à retenir; pour tester un regex sous awk, utilise le même regex sous egrep très similaire; donc un seul quote; egrep '...' comme awk ' ...'
Hors ligne
#10 Le 28/08/2022, à 14:34
- diesel
Re : grep d'une ligne avec un chiffre précie
Sauf que egrep est obsolète. Extrait de "man grep" :
" Trois variantes du programme sont disponibles : egrep, fgrep et rgrep ;
egrep est identique à grep -E, fgrep est identique à grep -F et rgrep
est identique à grep -r. L’appel direct à egrep ou fgrep est
déconseillé, mais est toujours possible pour permettre à d’anciennes
applications qui les utilisent de fonctionner sans modification."
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne