Supprimer ligne recherché dans un fichier

Résolu
alibm Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -  
alibm Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

phil__38 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   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
alibm Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   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
phil__38 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alibm Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   6
 
merci infiniment


0