Supprimer lignes de plusieurs fichiers

Résolu/Fermé
sylvaingre - 10 juin 2010 à 16:02
 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.



A voir également:

13 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 juin 2010 à 16:33
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 juin 2010 à 17:01
Affiche la sortie d'un des fichiers avec cette commande :

cat -A fichier.asc
0
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 juin 2010 à 17:51
Ok, donc on va commencer par :

sed -n '1,10p' fichier.asc | cat -A
0
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
Modifié par jipicy le 10/06/2010 à 18:26
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
<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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 juin 2010 à 18:35
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
10 juin 2010 à 18:45
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
Ca marche nickel, merci beaucoup!
0