Bonjour ,
Je veux supprimer les 10 premières lignes de chaque fichier et les remettre dans un fichier du meme nom ,j'ai essayé cette commande sans succèsCode:for file in ./*.txt ; do cat $file|tail -n +10 > $file ; done
Merci pour votre aide
Version imprimable
Bonjour ,
Je veux supprimer les 10 premières lignes de chaque fichier et les remettre dans un fichier du meme nom ,j'ai essayé cette commande sans succèsCode:for file in ./*.txt ; do cat $file|tail -n +10 > $file ; done
Merci pour votre aide
Bonjour :coucou:
Je parie même que ton fichier $file est vide.
Tu n'as pas le droit d'avoir une cible égale à la source.
La redirection ne doit pas être dans le fichier que tu es en train de traiter.
Non il n'est pas vide , comment choisir le nom de redirection ?
???
Tu mets bien ce que tu veux.
Un exemple :
Code:
1
2
3
4 for fic in ./*.txt do tail -n +10 $fic > ${fic%.*}_resultat.txt done
merci pour ta réponse , saurais tu comment ajouter le nom du fichier au tout début du fichier lui meme avec une boucle ?
Ajoute l'option i si cela convient.Code:
1
2
3
4
5
6
7
8
9 $ cat toto coco coco coco $ sed -e "1i\\$var" toto toto coco coco coco
Pour comprendre l'option -i :
Code:man sed
Salut,
Comme un exemple est toujours plus parlant :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 $ head * ==> f1 <== line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 ==> f2 <== line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 ==> f3 <== line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10
;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 $ for i in f*; do sed -i "1,5c\fichier ${i}" "${i}";done $ head * ==> f1 <== fichier f1 line 6 line 7 line 8 line 9 line 10 ==> f2 <== fichier f2 line 6 line 7 line 8 line 9 line 10 ==> f3 <== fichier f3 line 6 line 7 line 8 line 9 line 10