Découper une très longue ligne en plusieurs

kalifi Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
kalifi Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un très très long fichier contenant une seule ligne de plus de 5 millions de valeurs
0.55971931 0.5113123 0.51621799 0.65333583 0.5352019 0.42886304 0.5883952 0.57659072 0.65463236 0.48981324 0.52246554 0.4432738 0.55416584 0.43427686 0.54144264 0.73262018 0.52734922 0.49281018 0.64068342 0.48989701 ...............................................
(1L, 5024860C)

je souhaite le découper une plusieurs lignes de 255 colonnes.

d'avance merci
A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,
je souhaite le découper une plusieurs lignes de 255 colonnes.
J'avoue n'avoir pas tout compris là ;-\

Plusieurs lignes ?
Plusieurs colonnes ?
Ou les deux ?
1
kalifi Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,
départ : (ce que j'ai) une seule ligne (avec plusieurs valeurs comme ceci)
0.55971931 0.5113123 0.51621799 0.65333583 0.5352019 ..etc. (1L x 5024860C)

arrivée (ce que je souhaite avoir) ( n Lignes x 255 C colonnes ou valeurs)

merci
0
UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention   158 > kalifi Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

As-tu regardé la commande "fold" donnée plus bas par Char Snipeur ???
Elle semble toute indiquée pour ce que tu veux faire.

Sinon
sed -r 's/.{250}/&\n/g' fichier
devrait faire le boulot.
0
Utilisateur anonyme > UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention  
 
le monsieur veut des lignes de 255 "mots" (colonnes, ou champs) en considérant l'espace comme séparateur.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431 > Utilisateur anonyme
 
Hi,

Qu'à cela ne tienne…
sed -r 's/([^ ]* ){255}/&\n/g' fichier
;-)
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Il doit y avoir un truc simple, mais là, je l'ai pas... probablement avec awk.
Sinon, on peut le faire à la bourrin.
On commence par compter le nombre de caractères :
nb=$(wc -c fichier)
ensuite, une bonne boucle :
for (( i=0 ; i< nb/255 ; i+=1 ))
do
(( a=i*255+1 ))
(( b=a+254 ))
cut -c $a-$b fichier >> resu
done

Je n'ai pas testé, mais tu vois l'idée ?
0
Utilisateur anonyme
 
for i in $(< fichier); do ((++n%255)) && fmt=' ' || fmt='\n'; rslt="$rslt$i$fmt"; done
echo -e "$rslt"
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
trouver purement par hasard : fold - wrap each input line to fit in specified width
Voilà, me doutait bien qu'il existait une commande simple
0
Utilisateur anonyme
 
fold
"découpe" en fonction du nombre de colonnes, mais une colonne telle que la conçoit le terminal, c'est-à-dire ± un caractère. :(
0
kalifi Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
ça a marché avec :

sed -r 's/.{2805}/&\n/g' input.txt > output.txt

2805 le nombre d'espaces.

mon fichier input :
MotEspaceMotEspace ......Mot
taille du Mot : 10 Espaces

Merci à tous.
0
Utilisateur anonyme
 
taille du mot : 10 caractères.

tu pourrais donc, alors, utiliser
fold
avec 255*11-1, soit 255 fois (10 caractères + 1 espace) - 1 espace
...
?
0
kalifi Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
je viens de l'essayer ça marche également avec fold :

fold -w 2805 input.txt > output.txt
0