Extraire des lignes dans plusieurs fichiers [Résolu/Fermé]

Signaler
-
 yey -
Bonjour,
j'ai un dossier contenant plusieurs fichier comme toto20070101, toto20070108 ...
et je souhaite pour chacun d'entre eux les lires et recupérer les lignes, à part les 2 1eres (header) pour les stocker dans un autre fichier.
Voila mon code,


$nom affiche bien tous les dossiers dans l'echo mais ne le comprend pas pour cat

i=0;
for nom in 'ls'
do
((i++))

$echo $nom
#index[$i]=$nom
cat < $nom > essai[$i].txt
#$i++
#j=20070101
#cat < toto$j > essai[$i].txt
#pour enlever mes 2 1e lignes
sed -i '1 d' essai[$i].txt
sed -i '1 d' essai[$i].txt

done

merci d'avance

yey

1 réponse

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 871
Salut,

Voici une façon de faire. Chaque fichier original est sauvegardé avec l'extension ".bak". Chaque fichier contient 5 lignes . Dans l'exemple qui suit j'ai fait un "cat" seulement sur les 2 premiers fichiers...
jp@MDK:~/tmpfs/rep ssh$ ls
fich1.txt  fich2.txt  fich3.txt  fich4.txt  fich5.txt

jp@MDK:~/tmpfs/rep ssh$ cat fich1.txt
Ligne1
Ligne2
Ligne3
Ligne4
Ligne5

jp@MDK:~/tmpfs/rep ssh$ cat fich2.txt
Ligne1
Ligne2
Ligne3
Ligne4
Ligne5

jp@MDK:~/tmpfs/rep ssh$ sed -s -i.bak '1,2d' fich*

jp@MDK:~/tmpfs/rep ssh$ ls
fich1.txt  fich1.txt.bak  fich2.txt  fich2.txt.bak  fich3.txt  fich3.txt.bak  fich4.txt  fich4.txt.bak  fich5.txt  fich5.txt.bak

jp@MDK:~/tmpfs/rep ssh$ cat fich1.txt
Ligne3
Ligne4
Ligne5

jp@MDK:~/tmpfs/rep ssh$ cat fich2.txt
Ligne3
Ligne4
Ligne5

jp@MDK:~/tmpfs/rep ssh$
A adapter selon tes besoins ;-))
merci bien jipicy
ca a resolu mon pb

yey