Précédent   Forum du club des développeurs et IT Pro > Systèmes > Autres systèmes > Unix > Shell et commandes POSIX
Shell et commandes POSIX Vos questions sur l'utilisation des commandes shell sous Unix.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/12/2012, 14h41   #1
Sam77700
Invité de passage
 
Samuel Lombart
Inscription : octobre 2009
Messages : 5
Détails du profil
Informations personnelles :
Nom : Samuel Lombart

Informations forums :
Inscription : octobre 2009
Messages : 5
Points : 1
Points : 1
Par défaut [AIX] Découpage fichier séquentiel en line séquentiel

Bonjour,

Est-il possible de découper un fichier séquentiel en line séquentiel ?
Je souhaiterais pouvoir faire un retour à la ligne tous les 128 caractères de mon fichier sans passer par un programme mais juste par un script shell.

Merci d'avance pour vos réponses
Sam77700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 20h32   #2
frp31
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 4 224
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 4 224
Points : 10 425
Points : 10 425
un petit sed suffit pour faire ce genre d'action oui
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 23h02   #3
N_BaH
Modérateur
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 756
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 756
Points : 6 629
Points : 6 629
Bonjour,

Citation:
sans passer par un programme
en bash ?
read -n 128 dans une boucle while, pour lire/parcourir un fichier.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 00h26   #4
Sam77700
Invité de passage
 
Samuel Lombart
Inscription : octobre 2009
Messages : 5
Détails du profil
Informations personnelles :
Nom : Samuel Lombart

Informations forums :
Inscription : octobre 2009
Messages : 5
Points : 1
Points : 1
Je dois mal utiliser la commande sed alors.

J'ai réussi sur un fichier de petite taille mais quand je le fais sur un fichier contenant une ligne de 20000 caractères, j'obtiens un fichier vide.

Quand je disais pas par programme, je voulais plutôt dire pas par un langage autre que Shell Unix.

Je ne connais pas bash.

Mes enregistrements commencent tous par 002 donc, j'avais fait :
Code :
sed -e 's/  002/  \n002/g' fichier1 > fichier2
Je vais essayer le read -n 128. Je n'y avais pas pensé.
Sam77700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 00h36   #5
N_BaH
Modérateur
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 756
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 756
Points : 6 629
Points : 6 629
Citation:
Quand je disais pas par programme, je voulais plutôt dire pas par un langage autre que Shell Unix.
'comprends pas

tu veux faire du 100% shell, ou tu peux utiliser des programmes externes ?

Code :
sed 's/.\{128\}/&\n/g' fichier
oused, comme fold sont des programmes externes.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 23/12/2012, 11h31   #6
Sam77700
Invité de passage
 
Samuel Lombart
Inscription : octobre 2009
Messages : 5
Détails du profil
Informations personnelles :
Nom : Samuel Lombart

Informations forums :
Inscription : octobre 2009
Messages : 5
Points : 1
Points : 1
Les réponses que vous me faites me conviennent.
Je ferais le test jeudi.
Je maîtrise pas forcément UNIX et pour moi, la commande sed faisait partie d'Unix dans le sens où je la trouve dans le "man".

Je ne voulais pas utiliser un langage comme le c ou le java.

Je vous remercie pour votre aide et je confirmerais ou non si ça a marché.
Bonnes fêtes.
Sam77700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 16h39   #7
ok.Idriss
Responsable Modération

 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et auditeur au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 3 795
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 22
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et auditeur au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 3 795
Points : 12 157
Points : 12 157
Bonjour.

Citation:
Envoyé par Sam77700 Voir le message
pour moi, la commande sed faisait partie d'Unix dans le sens où je la trouve dans le "man".
Le man est très loin d'être uniquement spécifique au shell. Tu peux y trouver notamment toutes les fonctions de la lib C standard et POSIX (donc aucun rapport avec du shell).

Des langages shell t'en as une pelleté dont ksh, bash ou autre. Même Perl ou PHP ou Python ou d'autres peuvent être utilisés comme des langages shell via un interpréteur console (/usr/bin/perl, /usr/bin/php, etc).

Bon bref, sed et awk sont des programmes (voire même un langage complet pour le cas de awk avec diverses implémentations possibles : gawk, mawk...) indépendant. Mettre du awk dans son script ou mettre du php/perl ou autre, ça revient à utiliser des langages/programmes externes. Les commandes Unix sont elles mêmes des programmes externes et indépendants du shell (ls, cat, grep, ...).

Alors ça dépend ce que tu attend, mais de toute façon il est assez rare qu'un script shell bash, sh, ksh ou autre ne fasse pas au moins un appel à un programme externe. Sans sed, awk et grep notamment, le parsing reste assez limité.

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 17h06   #8
Sam77700
Invité de passage
 
Samuel Lombart
Inscription : octobre 2009
Messages : 5
Détails du profil
Informations personnelles :
Nom : Samuel Lombart

Informations forums :
Inscription : octobre 2009
Messages : 5
Points : 1
Points : 1
En fait, nous recevons un fichier séquentiel d'une entreprise extérieure via CFT. Il semblerait que cet outil ne permette pas de transférer le fichier directement au format line séquentiel. Nous avons donc besoin de transformer le fichier reçu avant que celui-ci passe dans notre chaîne de traitement en korn-Shell.

Merci pour les explications, je pratique simplement le monde Unix sans être un spécialiste.
Cordialement
Sam77700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 17h10   #9
ok.Idriss
Responsable Modération

 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et auditeur au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 3 795
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 22
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et auditeur au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 3 795
Points : 12 157
Points : 12 157
Bonjour.

Étant donné le besoin, je pense personnellement qu'il n'y a aucun mal à utiliser la commande sed dans un script ksh étant donné que cette commande est une commande présente de base dans la plupart des Unix d'actualité

Fin en tout cas, faut choisir ce qui est le plus adapté en fonction de ce dont tu dispose si ta problématique c'était uniquement de ne pas avoir à installer quelque chose en plus. Si sed est déjà là sur les machines cibles, n'hésites pas.

Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 10h23   #10
Sam77700
Invité de passage
 
Samuel Lombart
Inscription : octobre 2009
Messages : 5
Détails du profil
Informations personnelles :
Nom : Samuel Lombart

Informations forums :
Inscription : octobre 2009
Messages : 5
Points : 1
Points : 1
Bonjour,

J'ai fait le test des instructions données.

L'instruction
Code :
sed 's/.\{128\}/&\n/g' fichier
ne semble pas fonctionner sur un fichier contenant plusieurs lignes de 4090 caractères ou plus.

Par contre l'instruction répond complètement à mon besoin.

Je vous remercie pour votre aide.

Bonne fêtes de fin d'année.
Sam77700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h23.


 
 
 
 
Partenaires

Hébergement Web