Supprimer ligne recherché dans un fichier

[Résolu/Fermé]
Signaler
Messages postés
82
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
15 juin 2011
-
Messages postés
82
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
15 juin 2011
-
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

5 réponses

Messages postés
29
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
4 mai 2009
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
82
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
15 juin 2011
5
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.


Messages postés
29
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
4 mai 2009
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...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 881
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]$
;-))
Messages postés
82
Date d'inscription
jeudi 18 septembre 2008
Statut
Membre
Dernière intervention
15 juin 2011
5
merci infiniment