Supprimer ligne recherché dans un fichier

Résolu/Fermé
alibm Messages postés 82 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 - 8 avril 2009 à 00:37
alibm Messages postés 82 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 - 8 avril 2009 à 23:42
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 4 mai 2009 14
8 avril 2009 à 00:50
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 jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 6
8 avril 2009 à 01:14
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 samedi 20 décembre 2008 Statut Membre Dernière intervention 4 mai 2009 14
8 avril 2009 à 01:47
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
8 avril 2009 à 07:26
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
8 avril 2009 à 07:41
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 jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 6
8 avril 2009 à 23:42
merci infiniment


0