Script pour ajouter des espaces entre les lignes

HImac in touch

Membre expert
Club iGen
26 Juillet 2005
2 204
120
38
at Macland
Bonjour, j'essaye de faire d'effectuer des interlignes défini par moi meme dans un fichier texte et je vois qu'on peut le voir avec tetex ou latex , c koi ca , c'est un script shell Linux ?? un logiciel ??

Je comprend pas trop :confused:
 
Alycastre a dit:


Merci beaucoup Alycastre pour cette précision donc en faite ce n'est pas du tout un script pour le terminal. Moi ce que je cherche en faite c'est qu'entre chaque ligne de texte je dise avec un script interligne ( dont je ne connais pas la syntaxe:) ) , tu espaces entre ces 2 lignes, 3 lignes d'espaces vides par exemple.

Merci par avance :) :up: :up:
 
Si je comprends bien, tu veux transformer un contenu :
Bloc de code:
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccccc
en
Bloc de code:
aaaaaaaaaaa



bbbbbbbbbbb



ccccccccccccc
?
 
bompi a dit:
Si je comprends bien, tu veux transformer un contenu :
Bloc de code:
aaaaaaaaaaa
bbbbbbbbbbb
ccccccccccccc
en
Bloc de code:
aaaaaaaaaaa
 
 
 
bbbbbbbbbbb
 
 
 
ccccccccccccc
?


Oui voilà exactement j 'aimerais faire ça, je prend un fichier texte au hasard, et je lui dis que entre chaque ligne de texte il y ait 1 ou 2 ou 3 etc.... lignes d'espace vide. Comment t'as fait ça bompi ?? avec un script shell ?? tu peux me passer la syntaxe s'il te plaît ?
 
:D :D
J'ai juste tapé des caractères ... ;)
En fait, un petit script en PERL devrait faire l'affaire.
 
bompi a dit:
:D :D
J'ai juste tapé des caractères ... ;)
En fait, un petit script en PERL devrait faire l'affaire.

Et tu ne saurais pas où je peux trouver ça s'il te plait ? Parce que je suis super nul en prog PERL :( :(

Merci par avance :)
 
Bon, je viens d'écrire un petit script (pas bien génial mais lisible) qui paraît fonctionner correctement. Tu l'enregistre sous un certain nom (chez moi : "inter.pl") tu lui changes ses attributs pour qu'il soit exécutable (dans le Terminal : "chmod 755 inter.pl").
Bloc de code:
#!/usr/bin/perl

use strict;

sub usage {
    print "Usage: $0 <input file> <output file> [number of lines]\n";
    print "       number of lines is optional, defaulting to 2\n";
    exit;
}

if (@ARGV < 2) {
    usage();
}

my $zeINPUT = $ARGV[0];
my $zeOUTPUT = $ARGV[1];
my $zeNUMBER = (@ARGV == 3) ? $ARGV[2] : 2;

open (FILEIN, "< $zeINPUT") or die "unable to open $zeINPUT for reading";
open (FILEOUT, "> $zeOUTPUT") or die "unable to open $zeOUTPUT for writing";

my $i = 0;
while (<FILEIN>){
    if ($i == 0){
        $i++
    }
    else{
        for (my $j = 0; $j < $zeNUMBER; $j++) {
            print FILEOUT "\n";
        }
    }
    print FILEOUT $_;
}

close FILEIN ;
close FILEOUT ;
 
bompi a dit:
Bon, je viens d'écrire un petit script (pas bien génial mais lisible) qui paraît fonctionner correctement. Tu l'enregistre sous un certain nom (chez moi : "inter.pl") tu lui changes ses attributs pour qu'il soit exécutable (dans le Terminal : "chmod 755 inter.pl").
Bloc de code:
#!/usr/bin/perl
 
use strict;
 
sub usage {
    print "Usage: $0 <input file> <output file> [number of lines]\n";
    print "       number of lines is optional, defaulting to 2\n";
    exit;
}
 
if (@ARGV < 2) {
    usage();
}
 
my $zeINPUT = $ARGV[0];
my $zeOUTPUT = $ARGV[1];
my $zeNUMBER = (@ARGV == 3) ? $ARGV[2] : 2;
 
open (FILEIN, "< $zeINPUT") or die "unable to open $zeINPUT for reading";
open (FILEOUT, "> $zeOUTPUT") or die "unable to open $zeOUTPUT for writing";
 
my $i = 0;
while (<FILEIN>){
    if ($i == 0){
        $i++
    }
    else{
        for (my $j = 0; $j < $zeNUMBER; $j++) {
            print FILEOUT "\n";
        }
    }
    print FILEOUT $_;
}
 
close FILEIN ;
close FILEOUT ;



Oh merci beaucoup:up: :up: , par contre j'arrive pas à voir sur quel ligne ou je dois mettre le nombre de lignes que je veux faire sauter pour que chaque ligne de texte ? :confused:
 
Allez ! Un effort :D !
Le nombre de lignes est par défaut "2" et pour le changer tu le passes en paramètre.
Genre
Bloc de code:
./inter.pl in.txt out.txt 4
pour intercaler 4 lignes entre chaque ligne du fichier "in.txt" et pour écrire le résultat dans "out.txt".
Note : ne pas prendre le même fichier en entrée et en sortie.
 
  • J’aime
Réactions: HImac in touch
bompi a dit:
Allez ! Un effort :D !
Le nombre de lignes est par défaut "2" et pour le changer tu le passes en paramètre.
Genre
Bloc de code:
./inter.pl in.txt out.txt 4
pour intercaler 4 lignes entre chaque ligne du fichier "in.txt" et pour écrire le résultat dans "out.txt".
Note : ne pas prendre le même fichier en entrée et en sortie.


OOOOOOOOOOOOOOOOOOH ok , j'avais presque compris mais justement je comprenais pas pourquoi tu avais écris number of line , je croyais que c'était à l intérieur du script , j 'avais bien vu le 2 d'en dessous mais je croyais qu 'il fallait pas le changer vu qu'il était optionnel.

Merci beaucoup je vais réessayer ça ce soir, vu que là je suis sur Windaube :mad: . Et je te dis les résultats dès que j'y suis. Merci beaucoup. :up:


Et sinon toi ça va ?? :D :D
 
voila tu peux donc rajouter des line feed
si tu as perl sous windows ca marche aussi

pour info Latex et autres se sont des Markup Languages
cela te permet de mettre en forme

comme le richtext le html ecetera
:zen:
 
Et surtout leur papa à tous, le SGML.
 
bompi a dit:
Et surtout leur papa à tous, le SGML.


Mini question éclair , c'est quoi déjà qu'est utiliser sur le terminal de Mac OS X donc de Linux? :rose: :rose: Le bash ou le perl ?
 
HImac in touch a dit:
Mini question éclair , c'est quoi déjà qu'est utiliser sur le terminal de Mac OS X donc de Linux? :rose: :rose: Le bash ou le perl ?
Par défaut, sur
=> Puma (10.1) et Jaguar (10.2) : tcsh;
=> Panther (10.3) et Tiger (10.4) : bash.
Mais on peut modifier son shell personnel, puisqu'ils sont installés avec le système. Personnellement, j'utilise zsh.
Pour LaTeX, voir ceci ;) .
 
non LA console ne veut pas dire linux

osx est une BSD (Berkeley software Distribution )

le language de script est un shell (coquillage)
il en existe différentes espèces

sous Panther et Tiger le shell par défault est un Bourne-shell

BASH -> Bourne shell again

:zen:

PS : sorry double post je n'avais pas vu
 
FjRond a dit:
Par défaut, sur
=> Puma (10.1) et Jaguar (10.2) : tcsh;
=> Panther (10.3) et Tiger (10.4) : bash.
Mais on peut modifier son shell personnel, puisqu'ils sont installés avec le système. Personnellement, j'utilise zsh.
Pour LaTeX, voir ceci ;) .


Oki merci donc c'est bien en bash je vais le fair et non en Perl :D :D , merci , car je commançais à m'embrouiller sérieux avec tout ces codes XD.
 
Je comprend pas là , je dois avoir louper un truc, j'ai écris ca ( en bash ) sur mon terminal, il me met Commande éxécuté mais je trouve le fichier nul part ?? Pourtant j 'ai bien créé toto.rtf sur le bureau et j 'ai mis plein de lignes pleines. J'avoue que je comprend pas là ?_? . Quelqu'un pour éclairer ma lanterne ?

Bloc de code:
#!/bin/bash

if [ $# -lt 2 ]
then
    echo "Usage : $0 <toto.rtf> <toto2.rtf> [4]"
    exit 1
fi

zeINPUT=$1
zeOUPUT=$2
zeNUMBER=${3:-2}

while read line
do
    echo $line
    for (( i=1 ; i <= $zeNUMBER ; i++ ))
    do
        echo "\n"
    done 
done < $zeINPUT >$zeOUTPUT
 
J'ai un peu l'impression d'avoir perdu du temps, là, non ? :siffle:
À part ça, tu as deux erreurs :
1) remplacer
Bloc de code:
zeOUPUT=$2
par
Bloc de code:
zeOUTPUT=$2
2) remplacer
Bloc de code:
echo "\n"
par
Bloc de code:
echo ""
 
Tiens, au passage : tu devrais peut-être veiller à ne pas mettre d'interlignes à la fin du fichier, ça paraît plus chic.