apprentissage du bash - Shell/Batch - Programmation
Marsh Posté le 16-02-2009 à 12:09:10
exact! je viens de voir ça merci bcp
ya encore d'autre pb de syntaxe... je vais m'y coller plus serieusement
Merci bcp a toi a bonne journée
Marsh Posté le 16-02-2009 à 12:27:32
= en contexte arithmétique, c'est l'affectation, pas la comparaison.
Marsh Posté le 16-02-2009 à 16:22:46
De toute façon, la syntax for (( ; ; )) n'est pas portable. Il vaut mieux utiliser while.
Marsh Posté le 18-02-2009 à 11:31:32
coucou,
j'ai essayé de faire mieux qu'au début, mais cette fois je pense avoir cerné le probleme: je crois que le awk ne trouve pas la variable que je voudrais pour "borner" ma lecture... dans le man awk ils parlent de -v (dans le BEGIN) donc j'ai essayé ça sans plus de succès, *O rage, O desespoir*
y'a-t-il une lumliére au bout de la nuit?
Code :
|
merci d'avance
Marsh Posté le 18-02-2009 à 12:51:37
Pour infos, en Unix standard (et probablement en bash aussi), il existe la fonction split qui découpe un gros fichiers en plusieurs petits fichiers. On peut lui donnr le nombre de lignes maximum par fichier, etc.
Autrement, on peut aussi faire ça avec des head ... | tail ....
Sinon, la ligne du awk me parait étrange à cause du while, car awk fait une boucle implicite. D'autre part, il n'y a pas besoin de la variable i, car il existe une variable standard NR, qui fait cela. Donc on pourrait avoir
awk -v MAX=$MAX '{if (NF > 1 && NF < $MAX) print $0}' tout.dat > res$n.dat |
(non testé).
Marsh Posté le 21-02-2009 à 13:47:53
Merci pour ta réponse. J'ai testé split mais en fait ça ne fait pas vraiment ce que je veux :s
ce que je voudrais c'est que mon fichier soit découpé en x petits fichiers mais que les fichiers se superposent.
i.e. => n°1 = de la ligne 1 à 10
n°2 = de la ligne 5 à 15
n°3 = de la ligne 10 à 20
je ne m'exprinme pas bien :s
en fait c'est le 1er champ de mon fichier (tableau) qui correspond au jour de l'année qui doit me servir de séparateur c'est pour ça que j'avai mis $1 dans ma ligne de awk, donc en fait:
n°1 = du jour 1 au jour 10
n°2 = du jour 5 au jour 15
...
apparement split n'a pas d'option pour ça,
mais peut-etre avec un print tout simple (sans utiliser le awk) je test
Marsh Posté le 16-02-2009 à 11:48:32
Bonjour a tous,
je m'initie a la programmetion en bash .
je cherche a lire un (très) gros fichier et a en sotir des paquets de lignes dans des fichiers incrémentés.
après des aller/retour sur forums et tuto, j'ai fais ce petit bout de code (*honte*)
apparemment, il ne reconnait meme pas n = 1, car il me ressort et se bloque:
je ne trouve pas la solution a mon probleme sur les tuto/forums... (*re-honte*), c'est pourquoi je viens solliciter les conseils des "grands"
merci d'avance