Supprimer lignes de plusieurs fichiers [Résolu/Fermé]

- - Dernière réponse :  sylvaingre - 10 juin 2010 à 19:26
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.



Afficher la suite 

13 réponses

Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4627
0
Merci
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
Merci
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
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4627
0
Merci
Affiche la sortie d'un des fichiers avec cette commande :

cat -A fichier.asc
0
Merci
Cela m'affiche le fichier. Encore pas en entier, il ya plus de 10000 lignes par fichier
0
Merci
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.
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4627
0
Merci
Ok, donc on va commencer par :

sed -n '1,10p' fichier.asc | cat -A
0
Merci
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'
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4627
0
Merci
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
Merci
<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
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4627
0
Merci
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
Merci
c'est bien ça, pour les 151 fichiers du répertoire. Merci pour ton temps en tout cas
Messages postés
43481
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4627
0
Merci
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
Merci
Ca marche nickel, merci beaucoup!