Comment supprimer des lignes d'un fichier

Résolu
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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
A voir également:

16 réponses

(Pabix) Messages postés 578 Date d'inscription   Statut Membre Dernière intervention   81
 
sed -e '3,/AAAAAAAAAAAAAAAAAAAAAAAA /d'
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Essaie plutôt :
sed '3,$ {/^AA*/d}' fichier
;-))
0
(Pabix) Messages postés 578 Date d'inscription   Statut Membre Dernière intervention   81
 
c’est vrai que c’est plus propre :)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > (Pabix) Messages postés 578 Date d'inscription   Statut Membre Dernière intervention  
 
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]$  
;-))
0
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473
 
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]$ 
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
;-))

Mais en plus compact y'a :
sed '3,$ {/^AA*\|^$/d}' fichier
;-))
0
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473
 
merch'i bien ! :-)))
0

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

Posez votre question
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473
 
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]$

0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   6
 
Bonjour à toutes et tous,

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

Merci encore à toutes et tous
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   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}
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaye comme ça alors :
sed '1,3!{/^AA*/d}'
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   6
 
Hélas ce n'est pas mieux

sed '1,3!{/^AA*/d}' fichier
sed : commande incohérente : 1,3!{/^AA*/d}
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaye alors '0,3' sans grande conviction ;-(
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   6
 
Non pas plus pas moin aucune commande possible
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Quelle version de sed ? (sed --version ou sed -v)
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   6
 
Version 5
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   6
 
Merci beucoup de l'aide
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ça a marché ?
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   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é ???
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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 ;-))
0
stephbret56 Messages postés 186 Date d'inscription   Statut Membre Dernière intervention   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+
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Linux - Ordonnancement des taches
Automatiser des tâches avec init et cron
0