Comment supprimer des lignes d'un fichier

[Résolu/Fermé]
Signaler
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
Bonjour,

J’aimerai à partir de la commande sed supprimer des lignes avec les caractères AAAAAAAAAAAAAAAAAAAAAAAA la suppression ne doit ce faire qu'à partir de la 3ème ligne du fichier et jusqu'à la fin.
Le fcichier avant modif:

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

Le fichier après modif:

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF


123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

Merci pour votre aide

16 réponses

Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
82
sed -e '3,/AAAAAAAAAAAAAAAAAAAAAAAA /d'
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Salut,

Essaie plutôt :
sed '3,$ {/^AA*/d}' fichier
;-))
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
82
c’est vrai que c’est plus propre :)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887 >
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009

Et que ça marche surtout ;-))
[tmpfs]$ cat fichier
AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

[tmpfs]$ sed -e '3,/AAAAAAAAAAAAAAAAAAAAAAAA /d' fichier
AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

[tmpfs]$ sed '3,$ {/^AA*/d}' fichier
AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA

123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF


123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF


123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF

[tmpfs]$  
;-))
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
472
salut,

en plus compact :

[
redfox@mandriva Desktop]$ cat prog.sed
/^$/d

[redfox@mandriva Desktop]$

[redfox@mandriva Desktop]$ sed -f prog.sed sedfile > sedfile2 | sed '3,$ {/^AA*/d}' sedfile2
AAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA
123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF
123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF
123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF
[redfox@mandriva Desktop]$ 
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
;-))

Mais en plus compact y'a :
sed '3,$ {/^AA*\|^$/d}' fichier
;-))
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
472
merch'i bien ! :-)))
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
472
plus court ?

[redfox@mandriva Desktop]$ cat prog.sed
/^$/d
3,$ {/^AA*/d}

[redfox@mandriva Desktop]$
[redfox@mandriva Desktop]$ sed -f prog.sed sedfile
AAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA
123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF
123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF
123456789
123456789
DGFDFGFGR
FDSFGSGGF
DSDSFFDFF
[redfox@mandriva Desktop]$

Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Bonjour à toutes et tous,

Merci pour vos solutions je vais essayer ce matin je vous tiens au courant.

Merci encore à toutes et tous
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Il m'est pas possible de passer la commande sed 3,$ {/^AA*/d} j'ai à chaque fois le message suivant:

sed : commande incohérente : 3,$ {/^AA*/d}
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Essaye comme ça alors :
sed '1,3!{/^AA*/d}'
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Hélas ce n'est pas mieux

sed '1,3!{/^AA*/d}' fichier
sed : commande incohérente : 1,3!{/^AA*/d}
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Essaye alors '0,3' sans grande conviction ;-(
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Non pas plus pas moin aucune commande possible
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Quelle version de sed ? (sed --version ou sed -v)
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Version 5
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Bon dans un 1er temps essaye ça :
 sed -n '1,3p' fichier
et si ça t'affiche bien que les 3 premières lignes essaie alors :
sed -n -e '1,3p' -e '/^AA*/!p' fichier
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Merci beucoup de l'aide
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Ça a marché ?
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Oui mais le résultat n'est pas tout à fait celui que j'attends je pense faire autrement

Je vais modifier toutes les lignes qui correspondent au motif AAAAAAAAAAAAAAA après la ligne 6 jusqu'à la fin de mon fichier par les caractères suivants XXXXXXXXXXXXXXXXXXXXXX puis je vais faire le delete des lignes qui sont égale à XXXXXXXXXXXXXXXX et la ca marche. pas simple mais le résultat est ok.

Merci encore pout l'aide au faite j'ai laissé un post sur le shutdown tu as répondu merci mais à ta connaissance il n'y a pas de moyen de répéter le sutdown tous les jours à partir de la commande sutdown il me semblait pourtant que la manipe était possible???

Donc la seule façon de faire est d’utiliser le cron pas d’autre possibilité ???
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Pour le shutdown voir la réponse de Brunomarc, en fait c'est un compromis entre le fait que la commande shutdown possède en effet une option de programmation (heure), mais similaire à la commande "at" c'est à dire programmable qu'une fois donc à initialiser tous les jours dans un fichier lu au démarrage du PC, et la commande cron qui automatise une tâche indéfiniment si l'on veut.

Honnêtement la seconde solution (cron) me semble quand même la plus appropriée ;-))
Messages postés
186
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
2 septembre 2011
6
Oui j’adopte la seconde solution donc je vais adapter par rapport au cron éventuellement tu n'aurais pas un exemple de cron pour automatiser le boot

Merci beaucoup bonne soirée A+
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887