Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2007, 14h55   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 25
Points : 6
Points : 6
Par défaut Manipuler une zone numérique dans un fichier plat

Bonjour,

J'aurai besoin de votre expertise pour résoudre un ptit problème que je rencontre.

Dans un fichier de type fichier plat, j'ai notamment deux zones numériques :
Première zone : du caractère 158 au caractère 177
Deuxième zone : du caractère 178 au caractère 191.

Mon objectif : avoir un fichier à l'identique mais avec les 2 zones numériques divisées par deux.

Je pense que l'opération n'est pas impossible avec sed ou awk mais je galère un peu.

Merci d'avance à tous.
Arnaud.
desbrandesq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 21h39   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par desbrandesq
Dans un fichier de type fichier plat, j'ai notamment deux zones numériques :
Première zone : du caractère 158 au caractère 177
Deuxième zone : du caractère 178 au caractère 191.

Mon objectif : avoir un fichier à l'identique mais avec les 2 zones numériques divisées par deux.

Avec « awk »

Code :
1
2
3
4
5
6
7
8
 
awk '
{
	print "Avant : "
	print $0
	print "Apres : "
 	printf("%s%020d%013d%s\n",substr($0,1,157),substr($0,158,20)/2,substr($0,178,13)/2,substr($0,191))
} '  test.txt


Résultat :

Code :
1
2
3
4
5
Avant :
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 000000000000000022220000000000444 3456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
Apres :
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 000000000000000011110000000000222 3456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h13.


 
 
 
 
Partenaires

Hébergement Web