Supprimer ligne recherché dans un fichier

Résolu
alibm Messages postés 100 Statut Membre -  
alibm Messages postés 100 Statut Membre -
Bonjour,
J'a i quelques questions à propos du sed.

J'ai un fichier data qui contient ces informations
001126:olivier:26:London
004146:brad:25:Paris
0012548:Phillipe:21:Manchester

Pour chercher un une personne on fait par exemple
a=001126
grep $a data

Pour supprimer une ligne dans un fichier on fait par exemple ligne 2
sed '2d' data

Comment avoir le numéro de la ligne contenat un motif après recherche ??
Comment supprimer parsuite ce ligne par la commande sed ou autre??
quand je fais
a=2
sed '$ad' data

il fait erreur

Merci infiniment

Aly
Configuration: Linux
Firefox 3.0.8

5 réponses

  1. phil__38 Messages postés 29 Statut Membre 14
     
    Salut,

    Pour ton problème, le plus simple serait à mon avis :

    a=004146
    grep -v "^$a" data

    pour le sed:
    sed "${a}d" data
    devrait mieux marcher...

    je n'ai pas unix à la maison, je ne peux donc pas vérifier tout ça...
    4
    1. alibm Messages postés 100 Statut Membre 6
       
      Salut,

      001126:olivier:26:London
      004146:brad:25:Paris
      0012548:Phillipe:21:Manchester

      j'ai le motif a=01126
      Je veut obtenir le numero du ligne de ce motif pour la supprimer.


      0
  2. phil__38 Messages postés 29 Statut Membre 14
     
    grep -n t'affiche le numéro de ligne, que tu peux extraire facilement, genre:
    grep -n "$a" data | cut -d: -f1

    a vérifier...
    1
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Il faut prendre l'habitude de lire les pages man
    man grep
    -n, --line-number 
    Ajouter à chaque ligne de sortie un préfixe contenant son numéro dans le fichier. 
    --
    106485010510997108
    1
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    [tmpfs]$ cat fich
    001126:olivier:26:London
    004146:brad:25:Paris
    0012548:Phillipe:21:Manchester
    
    [tmpfs]$ sed '/001126/d' fich
    004146:brad:25:Paris
    0012548:Phillipe:21:Manchester
    
    [tmpfs]$ a="001126"
    
    [tmpfs]$ sed "/$a/d" fich     # note les quotes doubles autour de la variable
    004146:brad:25:Paris
    0012548:Phillipe:21:Manchester
    
    [tmpfs]$ a=1
    
    [tmpfs]$ sed "/$a/d" fich     # tout est effacé, normal le motif "1" étant présent dans chaque ligne 
    
    [tmpfs]$ sed "$a d" fich
    004146:brad:25:Paris
    0012548:Phillipe:21:Manchester 
    
    [tmpfs]$
    ;-))
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. alibm Messages postés 100 Statut Membre 6
     
    merci infiniment

    0