Découper une très longue ligne en plusieurs

Fermé
kalifi Messages postés 11 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 5 juillet 2018 - 3 juil. 2018 à 18:18
kalifi Messages postés 11 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 5 juillet 2018 - 5 juil. 2018 à 11:26
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 juil. 2018 à 19:32
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 vendredi 15 janvier 2010 Statut Membre Dernière intervention 5 juillet 2018
4 juil. 2018 à 12:21
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 lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > kalifi Messages postés 11 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 5 juillet 2018
4 juil. 2018 à 14:33
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 lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020
Modifié le 4 juil. 2018 à 16:44
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Utilisateur anonyme
4 juil. 2018 à 17:32
Hi,

Qu'à cela ne tienne…
sed -r 's/([^ ]* ){255}/&\n/g' fichier
;-)
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 juil. 2018 à 21:43
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
Modifié le 3 juil. 2018 à 21:57
for i in $(< fichier); do ((++n%255)) && fmt=' ' || fmt='\n'; rslt="$rslt$i$fmt"; done
echo -e "$rslt"
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 juil. 2018 à 22:00
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
3 juil. 2018 à 23:03
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 vendredi 15 janvier 2010 Statut Membre Dernière intervention 5 juillet 2018
4 juil. 2018 à 18:29
ç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
4 juil. 2018 à 18:50
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 vendredi 15 janvier 2010 Statut Membre Dernière intervention 5 juillet 2018
5 juil. 2018 à 11:26
je viens de l'essayer ça marche également avec fold :

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