Menu

Suppression d'un bloc de lignes recurssif [Résolu/Fermé]

- - Dernière réponse :  gogo - 3 févr. 2009 à 09:49
Bonjour,
voila j'ai un fichier avec des blocs de 72 lignes
exemple :

1:debut
2:gfs
3:hfds
4:hfds
.....
....
69:gdsq
70:gdsq
71:gqsd
72 :fin
73:debut
74:gfs
75:hfds
76:hfds
.....
....
140:gdsq
142:gdsq
143:gqsd
144 :fin
145:debut
146:gfs
147:hfds
148:hfds
.....
....
213:gdsq
214:gdsq
215:gqsd
216:fin
....
....
je voudrai savoir comment je peux supprimer les lignes '57 a 69' du premier bloc et les lignes '114 a 126' du deuxieme bloc et les lignes '171 a 183' .... avec la commande sed ou autre jusqu'a fin de fichier

merci d'avance
Afficher la suite 

7 réponses

Messages postés
43477
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4508
0
Merci
Salut,

Avec un truc du genre :
sed '57~57 s/.*/DEBUT&/; 69~57 s/.*/FIN&/' fichier | sed '/DEBUT/,/FIN/d'
C'est pas très académique, mais ça marche ;-))
0
Merci
bonjour jipicy

ben ca ne marche pas, mon but est de supprimer les lignes de 57 à 69 d'un bloc de 72 lignes dans un fichier de presque 1000000 de lignes

alors je cherche un truc du genre boucle "for / sed / i,j incremental de 57 ".

merci
Messages postés
43477
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4508
0
Merci
Bon on va essayer avec un exemple.

Soit un fichier de 50 lignes. Supprimer les lignes 4 à 6 d'un bloc de 12 lignes :
jp@MDK:~/tmpfs ssh$ cat fich
1debut bloc
2
3
4a supprimer
5a supprimer
6a supprimer
7
8
9
10
11
12fin bloc
13debut bloc
14
15
16a supprimer
17a supprimer
18a supprimer
19
20
21
22
23
24fin bloc
25debut bloc
26
27
28a supprimer
29a supprimer
30a supprimer
31
32
33
34
35
36fin bloc
37debut bloc
38
39
40a supprimer
41a supprimer
42a supprimer
43
44
45
46
47
48fin bloc
49debut bloc
50
jp@MDK:~/tmpfs ssh$ sed '4~12 s/.*/DEBUT&/;6~12 s/.*/FIN&/' fich  | sed '/DEBUT/,/FIN/d'
1debut bloc
2
3
7
8
9
10
11
12fin bloc
13debut bloc
14
15
19
20
21
22
23
24fin bloc
25debut bloc
26
27
31
32
33
34
35
36fin bloc
37debut bloc
38
39
43
44
45
46
47
48fin bloc
49debut bloc
50
jp@MDK:~/tmpfs ssh$
Ça le fait, non ?
0
Merci
re

ben je vois bien que ca le fait mais avec mon fichier c'est pas le cas,je travaille sous UNIX je ne sais pas pourquoi ca marche pas

"&/ is not a recognized function."

au faite les lignes a supprimer sont des sauts de lignes '^M' y'en a plein mais je veux seulement supprimer ceux de la ligne 57 à 69

car je peux les supprimer toutes en meme temps mais je veux seulement ceux de la fin cad 'de 57 à 69'

je ne sais pas si tu me comprends ??

merci encore une fois
jipicy
Messages postés
43477
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
17 mars 2018
4508 -
"&/ is not a recognized function."
Vu que c'est des lignes vides, à ce moment là supprime le "&" de l'expression (s/.*/DEBUT/)...

au faite les lignes a supprimer sont des sauts de lignes '^M' y'en a plein mais je veux seulement supprimer ceux de la ligne 57 à 69
Est-ce que c'est les seules lignes vides consécutives de ton fichier ?
0
Merci
kif kif

maintenant c "/ is not a recognized function."
0
Merci
normalement c'est OK

sed '/57~12/d'
car de 57 à 69 ya 12 lignes


merci encore une fois ;)
-1
Merci
Bonjour,
avec vi

:57,69d

puis
:114,126d

et enfin
:171,183d

++
Poulpoul