[Shell] sélection chaine de caractères

Fermé
koma_666 Messages postés 429 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 9 mai 2016 - 24 oct. 2011 à 12:55
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 24 oct. 2011 à 14:10
Bonjour,

J'ai un fichier texte contenant plusieurs chaines de caractères délimitées par une virgule :

chaine1,chaine2,chaine3,chaine4,chaine5,chaine6,chaine7,chaine8,chaine9,chaine10,chaine11,chaine12,etc.

Je souhaiterais extraire, par exemple, les 3 premières chaines, et les injecter dans fichier1.txt, puis les 3 chaines suivantes, injecter dans fichier2.txt, puis les 3 chaines suivantes, etc.

Ce qui donnerait :

Fichier1.txt
chaine1,chaine2,chaine3

Fichier2.txt
chaine4,chaine5,chaine6

etc.

Je pensais utiliser faire une boucle avec un cut :
stop=0
while [ stop != 100 ]
do

a=1
d=1
f=3
cut -d"," -f$d-$f contenu.txt > fichier$a.txt
d=$(($d+3)
f=$(($f+3)
stop++
a++

done

Mais visiblement, le cut n'accepte pas les variables dans son -f.

Vous auriez une solution ?

Merci d'avance.


A voir également:

1 réponse

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
24 oct. 2011 à 13:48
Cela ne pose pas de problème:
johand@osiris: ~/src/CCM/bash $ cat mydata.txt chaine1,chaine2,chaine3,chaine4,chaine5,chaine6,chaine7,chaine8,chaine9,chaine10,chaine11,chaine12
laine1,laine2,laine3,laine4,laine5,laine6,laine7,laine8,laine9,laine10,laine11,laine12
daine1,daine2,daine3,daine4,daine5,daine6,daine7,daine8,daine9,daine10,daine11,daine12
johand@osiris: ~/src/CCM/bash $ d=1; f=3 ;cut -d"," -f$d-$f < mydata.txt chaine1,chaine2,chaine3
laine1,laine2,laine3
daine1,daine2,daine3
johand@osiris: ~/src/CCM/bash $ d=$(($d+3)); f=$(($f +3)) ;cut -d"," -f$d-$f < mydata.txt 
chaine4,chaine5,chaine6
laine4,laine5,laine6
daine4,daine5,daine6

Par contre l'auto-incréméntation n'existe pas en bash.
a++ => a=$(($a +1 ))

0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
24 oct. 2011 à 14:10
Salut,

Par contre l'auto-incréméntation n'existe pas en bash.
a++ => a=$(($a +1 ))


Si si ;-\

((a++))

;-)
0