tailles de lignes fixes - Perl - Programmation
Marsh Posté le 13-08-2008 à 11:12:47
Si tu as une chaine de texte $string, et que tu veux la decouper en un array @string_parts de sous-chaines de taille $maxSize, il y a le code suivant, particulièrement élégant:
@string_parts = $string =~ /(.{1,$maxSize})/go;
Apres, il te suffit d'adapter a tes besoins.
Par exemple ce code ci va tronquer a 8 caracteres par ligne un fichier passé en entrée:
Code :
|
Tandis que celui la va wrapper a 8 caracteres par ligne un fichier passé en entrée:
Code :
|
A+,
Marsh Posté le 13-08-2008 à 15:40:38
Merci pour ta réponse, le premier exemple répond exactement à mon besoin
Intégré dans mon script sh ça donne :
perl -e 'my $maxSize = $ARGV[0];
while (<STDIN> ) {
print /(.{1,$maxSize})/o, "\n";
}' $tailleLigne < $fichierIn > $fichierOut
Marsh Posté le 28-08-2008 à 01:03:40
perl étant l'ami des choses écrites en une ligne, il peut y avoir plus "court"
Code :
|
Marsh Posté le 12-08-2008 à 17:42:28
Bonjour ,
Je suis en train de développer un script shell (ksh) qui manipule du contenu de fichiers.
Mon fichier en sortie doit avoir ses lignes avec une longueur fixe.
Cependant mon fichier peut contenir des caractères binaires 00 01 02 ... qui sont interprétés comme des retour chariot par la plupart des commandes shell comme sed, cut, awk ...
J'ai découvert que les commandes perl réagissent bien avec les "low values".
Il me reste un problème : fixer la taille finale des lignes (tronquer chaque ligne à une taille fixe)
Voici le bout de script qui me pose problème :
(le cut tronquera au premier low value trouvé sans considérer la suite de la ligne)
tailleLigne=100 #par exemple
cat $fichierIn | cut -b 1-${tailleLigne} >> $fichierOut
Je n'ai pas trouvé d'exemple de ce style (pack(), substring(), split() ... ?)
Merci pour votre aide