OVH Cloud OVH Cloud

Découpage d'une lignes TRES longue

1 réponse
Avatar
Eric Latombe
Bonjour à tous,

Voilà mon problème. J'ai un fichier tres gros qui est constitué d'une seule
ligne d'environ 160 000 caractères.

Le format de cette ligne est de la forme :

UNB+UNOAxxxxxxxxxxxxxxxxxxxxxUNB+UNOAyyyyyyyyyyyyyyyyyyyyUNB+UNOAzzzzzzzzzzz
zzzzzzzzzzzzz

Avec xxx, yyyy, zzzz des caractères dfférents bien sur (il peut y avoir un
nombre indeterminé de UNB+UNOA)


L'objectif est de constituer en sortie autant de fichier que de UNB+UNOA de
la façon suivante :

fichier1 :
UNB+UNOAxxxxxxxxxxxxxxxxxxxxx
fichier2:
UNB+UNOAyyyyyyyyyyyyyyyyyyyy
fichier3:
UNB+UNOAzzzzzzzzzzzzzzzzzzzzzzzz

Tout ceci n'est pas très complexe hormis la tres grande longueur de ma ligne
en entrée (160000 caractères), et donc les grep, sed et autre awk ne
fonctionne pas sur ce genre de ligne.

Avez vous une idée pour réaliser ce petit travail en utilisant uniquement du
script unix (en sh, ksh ou csh). (interdiction d'utiliser du perl par
exemple ou du C ou du python ...).

Merci

1 réponse

Avatar
JustMe
Eric Latombe wrote:
Bonjour à tous,

Voilà mon problème. J'ai un fichier tres gros qui est constitué d'une seule
ligne d'environ 160 000 caractères.

Le format de cette ligne est de la forme :

UNB+UNOAxxxxxxxxxxxxxxxxxxxxxUNB+UNOAyyyyyyyyyyyyyyyyyyyyUNB+UNOAzzzzzzzzzzz
zzzzzzzzzzzzz

Avec xxx, yyyy, zzzz des caractères dfférents bien sur (il peut y avoir un
nombre indeterminé de UNB+UNOA)


L'objectif est de constituer en sortie autant de fichier que de UNB+UNOA de
la façon suivante :

fichier1 :
UNB+UNOAxxxxxxxxxxxxxxxxxxxxx
fichier2:
UNB+UNOAyyyyyyyyyyyyyyyyyyyy
fichier3:
UNB+UNOAzzzzzzzzzzzzzzzzzzzzzzzz

Tout ceci n'est pas très complexe hormis la tres grande longueur de ma ligne
en entrée (160000 caractères), et donc les grep, sed et autre awk ne
fonctionne pas sur ce genre de ligne.

Avez vous une idée pour réaliser ce petit travail en utilisant uniquement du
script unix (en sh, ksh ou csh). (interdiction d'utiliser du perl par
exemple ou du C ou du python ...).

Merci






sed 's/UNB+UNOA/&^M/g' source | tr '15' '12' | tail +2 > dest

par exemple.