Supprimer lignes de plusieurs fichiers

Résolu
sylvaingre -  
 sylvaingre -
Bonjour,

Je dispose d'une série de fichiers ascii regroupant des données recueillies. Or, tous ces fichiers présentent en intro les paramètres de mesures, et cela pose problème pour traiter les données. Je souhaiterais supprimer les 20 premières lignes de tous ces fichiers (151 au total, donc j'ai pas envie de le faire manuellement!) Est-ce possible sous le terminal de Linux?

Merci d'avance!

PS : je ne suis en rien féru d'UNIX, mes connasissances s'arrêtent à quelques bases.



A voir également:

13 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Les fichiers sont des fichiers Linux ? Tous dans le même répertoire ? Ou avec une extension commune ?
Tu es sous Mandriva ? (Quelle version)
Dis-moi aussi la version de "sed" (sed --version)
0
sylvaingre
 
Bonjour,

Ce sont des fichiers réalisés via un logiciel windows. Je suis bien sous Mandriva, et la version de sed est la 4.2.1. Sinon, tous les fichiers sont bien dans le même répertoire et sont d'extension .asc
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Affiche la sortie d'un des fichiers avec cette commande :

cat -A fichier.asc
0
sylvaingre
 
Cela m'affiche le fichier. Encore pas en entier, il ya plus de 10000 lignes par fichier
0

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

Posez votre question
sylvaingre
 
j'essaye avec la commande sed, mais je peux le faire sur un fichier, et ne sais pas trop comment réaliser une boucle me permettant de le faire sur tous les fichiers.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ok, donc on va commencer par :

sed -n '1,10p' fichier.asc | cat -A
0
sylvaingre
 
donc j'ai regardé avec ta ligne de code, et me suis aperçu que les lignes à supprimer dans tous les fichiers sont de 1 à 97 '1,97p'
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ma ligne de code c'est pour voir comment sont codées les fins de lignes de tes fichiers afin d'adapter la commande qui devrait faire l'affaire...

Donc merci de poster le résultat de la commande demandée sur un fichier !
0
sylvaingre
 
<Parametre Laser Version:9 >Quantel Brio$
$
Freq:$
20Temps chauffe:$
15$
Energy:$
140$
T Eau^I37^IT NLO^I80^IT Sim^I45^ICmp^I12929562$
X:$
6.000$
Y:$
-10.500$
Z:$
-0.500$
DataAcq : $
NbTirs :$
40$
833.000$
834.000$
834.000$
835.000$
834.000$
834.000$
833.000$
833.000$
834.000$
834.000$
834.000$
835.000$
834.000$
833.000$
835.000$
834.000$
835.000$
835.000$
835.000$
834.000$
835.000$
834.000$
834.000$
835.000$
835.000$
834.000$
835.000$
834.000$
834.000$
834.000$
835.000$
834.000$
834.000$
834.000$
833.000$
834.000$
833.000$
835.000$
835.000$
834.000$
A :$
0.02$
B :$
0$
Warnings :$
0$
<Parametres d'acquisition Version:9>^M$
Mechelle^M$
Delai :^M$
700000.000000^M$
Porte :^M$
2000000.000000^M$
Temp exp :^M$
2.000000^M$
Gain :^M$
150^M$
Mode acq :^M$
1^M$
^I^I^I^I^I^INb Acc :^M$
1^M$
Trigger :^M$
1^M$
Temp :^M$
-13^M$
Temp int :^M$
34.8^M$
Temp Calibr :^M$
34.8^M$
Dark :^M$
0^M$
^I^I^I^I^I^IChemin dark :^M$
^M$
Chemin FichierSous :^M$
^M$
Offset :^M$
0^M$
Temp Ajuste :^M$
0^M$
Date :^M$
17/11/2009 10:57:34^M$

Voilà la sortie des 97 premières lignes
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
C'est bizarre la 2ème moitiée a des fins de ligne MS-DOS (^M$) alors que la 1ère moitié c'est des fins de lignes Unix ($) ;-\

Il faut donc virer les 97 premières lignes ?
0
sylvaingre
 
c'est bien ça, pour les 151 fichiers du répertoire. Merci pour ton temps en tout cas
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Bon normalement la commande :

sed -s -i.bak '1,97d' *.asc

Devrait faire l'affaire...

Mais fait d'abord l'essai sur une dizaine de fichiers que tu copies dans un répertoire temporaire pour voir si c'est concluant...

Le "-s" c'est pour traiter chaque fichier individuellement et non comme un seul et même fichier en sortie.
Le "-i.bak" c'est pour créer une copie de chaque fichier original (renommé en .bak" pour l'occasion)...
0
sylvaingre
 
Ca marche nickel, merci beaucoup!
0