Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/08/2022, à 00: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

sad

Hors ligne

#2 Le 24/08/2022, à 01: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, à 02: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 ? smile

Dernière modification par Watael (Le 25/08/2022, à 15:29)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 24/08/2022, à 06: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, à 06: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, à 11: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.

Hors ligne

#6 Le 24/08/2022, à 16: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, à 17:47

Tawal

Re : grep d'une ligne avec un chiffre précie

Watael a écrit :

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 wink
J'avais oublié de protéger le +.

Dernière modification par Tawal (Le 24/08/2022, à 17: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, à 15:26

VroumH

Re : grep d'une ligne avec un chiffre précie

Merci beaucoup ! Je vais pouvoir garder mes cheveux smile

Hors ligne

#9 Le 28/08/2022, à 15: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, à 15: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