IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unix Discussion :

HP-UX - sed et awk line too long


Sujet :

Unix

  1. #1
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut HP-UX - sed et awk line too long
    Bonjour,

    sous HP-UX, je dois faire des modifications (substitution d'une chaîne par une autre de même longueur) dans un fichier qui contient des lignes de texte > 3000c

    sed, awk et vi refusent obstinement de faire quoique ce soit. La limite pour ces utilitaires est de 3000c ( c'est un peu nul pour un système 64bits !!!!)

    Comment faire ?

    Merci pour votre aide

  2. #2
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour noooop,

    As-tu, sous HP-UX, la commande split? Avec une boucle qui coupe le fichier en "morceaux" de 1000 lignes (split -l 1000), fait les traitements puis réassemble avec un joli cat, ce serait possible...
    Un problème bien posé est déjà résolu (H. Bergson).

  3. #3
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Une solution consiste a utiliser gawk ou nawk

  4. #4
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    je regarde ..... réponse dans 2minutes
    Une solution consiste a utiliser gawk ou nawk
    Je ne peux pas installer ces utilitaires
    Split
    J'ai oublié une précision; le fichier en question est un fichier xml qui contient de l'XML encodé. Donc si je le coupe arbitrairement le traitement de la substitution risque d'être chaude à faire.

    Après il faut que je défasse l'opération split et donc remettre à plat ma structure XML (ce n'est pas moi qui génère le xml. Ce serait trop simple)

  5. #5
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Oops, j'ai compris! Ce sont les lignes qui font plus de 3000 caractères, pas le fichier qui fait plus de 3000 lignes! Okay, je réfléchis...
    Un problème bien posé est déjà résolu (H. Bergson).

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Si tu ne peux pas utiliser nawk ou gawk, la solution solution qui reste à mon avis, c'est d'écrire un programme en C

  7. #7
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bon, avec ton shell adoré (Bash, KSH) peux-tu travailler avec les variables? Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newLine=${oldLine/pattern/string}
    Toussa dans une jolie boucle avec un while read qui va bien?
    Un problème bien posé est déjà résolu (H. Bergson).

  8. #8
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Bon, avec ton shell adoré (Bash, KSH) peux-tu travailler avec les variables? Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newLine=${oldLine/pattern/string}
    Toussa dans une jolie boucle avec un while read qui va bien?

    Bingo....je cherchais dans ksh. Oui j'arrive à affecter aux variables des longueurs conséquentes. Je vais tester de ce pas. Merci BEAUCOUP !!!!

    Sinon, il me restera a développer ça en C, si le temps de traitement est trop long en shell

  9. #9
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Je viens d'essayer ca depuis le manuel KSH:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/ksh
    X=abcabcabc
    print ${X//abc/xyz}
    Voilà le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ ./t2.sh
    ./t2.sh[3]: ${X//abc/xyz}: bad substitution
    $
    Je suis dégouté !!!! Dans le manuel KSH ca marche. Pas sur HP-UX

  10. #10
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Dans le manuel KSH ca marche. Pas sur HP-UX
    Ca depend donc de la version de ksh que tu utilises...

    Donc a moins que tu ne puisses la mettre a jour, tu vas devoir trouver une autre solution...
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  11. #11
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Après de multiples recherche, j'ai essayé la commande ed. Mais là aussi celà ne marche pas. Donc pour résumer: sous hp-ux sed, grep, awk et ed ne fonctionne pas sur des fichiers qui contiennent des lignes de longueur supérieur a 3000c.

    Résolu en utilisant Perl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] the input line is too long
    Par Michael.RHAN dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 29/06/2012, 16h06
  2. [TPW] Erreur "Line too long" : comment déclarer plein de données
    Par maxiNoob dans le forum Turbo Pascal
    Réponses: 23
    Dernier message: 01/11/2009, 07h42
  3. ERROR 1406 (22001): Data too long for column
    Par olive_le_malin dans le forum Requêtes
    Réponses: 6
    Dernier message: 12/06/2006, 14h27
  4. "Data truncation: Data too long for column"
    Par bibiloute dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 04/05/2006, 09h08
  5. sed et awk sous windows/dos
    Par Jean-Matt dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 05/01/2006, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo