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

Shell et commandes GNU Discussion :

Longueur d'un fichier sous UNIX


Sujet :

Shell et commandes GNU

  1. #1
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut Longueur d'un fichier sous UNIX
    Bonjour à tous,

    Au boulot nous faisons pas mal de transfert de fichier entre MVS et UNIX.
    les fichiers MVS sont de longueur FIXE.
    Prenons l'exemple d'un fichier d'une longueur de 250 (caractères)

    - Avec quel commande UNIX puis je afficher sa longueur ?
    j'ai essayé avec un head -1 fichier | wc -m mais ça ne m'affiche que
    la longueur de la ligne choisi et pas la longueur du fichier

    - Est il possible d'afficher les lignes d'un fichier sur toute leur longueur en passant par vi et telnet (pour éviter le retour à la ligne automatique) ?
    il faut peut etre configurer HUMMINBIRD (mon terminal)

    - Comment avec vi créer un fichier d'une longueur fixe ?

    merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    deja je ne pene pas que tu evoque un fichier de longueur fixe, mais d'enregistrement (ligne) a longuer fixe .

    la taille d'un fcher tu l'obtiens par la commande ls -s ou la commande stat
    la longuer d'une ligne, tout depend du type de fichier :
    si "binaire" (data), pas moyen de le savoir à la vu du fichier
    si "ascii" (txt) tout depend du caractere de fn de ligne.

    Sous MVS la structure d'un fichier est indiquée a l'OS lors de sa creation, sous *nix un fichier n'est jamais qu'une succession d'octet sans aucune signification pour l'OS.
    C'est du domaine de l'applicaton que de gerer la structure.

  3. #3
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut
    les fichiers sont de l'ASCII
    je suis en KSH.... la commande stat n'existe pas et ls -s me ramène la taille du fichier, pas la longueur du fichier en octets.

    mais je comprend mieux maintenant le pourquoi du comment.
    ce qui délimite les lignes dans mon fichier c'est le retour chariot.
    Pour trouver la longueur de mon fichier (qui vient de MVS) il faut donc
    que je trouve la ligne la plus longue de mon fichier terminée par un retour chariot.. y a - t -il une commande simple pour ça ? ou faut il lire tout le fichier
    ligne par ligne pour les comparer ?

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    a priorie il te faut la determiner toi même, il serait plus simple de creer un fichier de description depuis Mvvs et de l'envoyer en meme temp que le fichier aSCII.

  5. #5
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut
    merci de ta réponse rapide
    bonne soirée

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 118
    Points : 28 515
    Points
    28 515
    Par défaut
    Un petit script pour connaître la longueur de la plus grande ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/ksh
    if [[ -f "$1" ]] 
    then
     typeset tmpfile="$0."$(date '+%y%m%d%H%M%S')
     [[ -f "${tmpfile}" ]] && rm "${tmpfile}"
     while read
     do
      echo "${REPLY}" | wc -c >> "${tmpfile}"
     done < "$1"
     cat "${tmpfile}" | sort -un | tail -1
     rm "${tmpfile}"
    fi
    Le même en une seule ligne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [[ -f "$1" ]] && while read ; do echo "${REPLY}" | wc -c ; done < "$1" | sort -un | tail -1

  7. #7
    DIE
    DIE est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Points : 66
    Points
    66
    Par défaut
    super merci pour le script je gade au chaud
    heu ça sert à quoi les double [[ ]] un simple [ ]
    ne suffirait pas ?

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 118
    Points : 28 515
    Points
    28 515
    Par défaut
    Citation Envoyé par DIE
    super merci pour le script je gade au chaud
    heu ça sert à quoi les double [[ ]] un simple [ ]
    ne suffirait pas ?
    Les doubles, c'est la syntaxe POSIX / ksh.
    Les simples, c'est l'ancienne syntaxe sh / bsh reprise par bash...
    Cela permet une certaine cohérence d'écriture avec les doubles (( )) des expressions calculées.

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

Discussions similaires

  1. Copier fichiers sous UNIX sur cle USB
    Par eldiablol dans le forum Administration système
    Réponses: 3
    Dernier message: 30/11/2006, 20h10
  2. Verouillage fichier sous UNIX
    Par bigben99 dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2006, 15h07
  3. Notification de modification de fichier sous unix en java
    Par deomis dans le forum Général Java
    Réponses: 6
    Dernier message: 20/06/2006, 15h43
  4. Concaténation de fichiers sous UNIX?
    Par airmax77 dans le forum Linux
    Réponses: 4
    Dernier message: 27/01/2006, 17h23
  5. Réponses: 7
    Dernier message: 20/09/2005, 18h47

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