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 :

sed et Expr-Reg : Passer en majuscules le contenu d'un fichier entre 2 colonnes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut sed et Expr-Reg : Passer en majuscules le contenu d'un fichier entre 2 colonnes
    Bonjour
    Auriez vous une idée pour passer en majuscule tous le contenu d'un fichier situé entre 2 positions dans un fichier .txt (Sous Unix/linux en shell ou Windows en PowerShell )
    exemple
    Voici un fichier test.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             1         2         3         4         5         6         7         8         9 
    123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
    12345 Ceci Est Un TEST A partir D'ici tous passer en Majuscule Jusque La Ceci est un Test
    12345 Ceci Est Un TEST A partir D'ici Passe en majuscule              La Ceci est un Test
    12345 Ceci Est Un TEST A partir en Majuscule ooooooooooooooooooo                         
    je souhaite passer en majuscule uniquement les caractères situés entre les positions 23 à 72 ce qui me donnera le résultat suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             1         2         3         4         5         6         7         8         9 
    123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
    12345 Ceci Est Un TEST A PARTIR D'ICI TOUS PASSER EN MAJUSCULE JUSQUE LA Ceci est un Test
    12345 Ceci Est Un TEST A PARTIR D'ICI PASSE EN MAJUSCULE              LA Ceci est un Test
    12345 Ceci Est Un TEST A PARTIR EN MAJUSCULE OOOOOOOOOOOOOOOOOOO
    Avec awk : c'est OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat ok.txt | awk '{print substr($0,1,22) toupper(substr($0,23,49)) substr($0,72)}'
    mais avec sed et les expressions régulières auriez vous une idée


    Merci de votre aide
    @Argoet

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Pour awk, j'aurais plutôt utilisé un truc comme "$i=toupper($i);". Moins lourd qu'un substring.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk 'BEGIN{FS="";OFS=""} {for (i=23;i<=72;i++) $i=toupper($i);} 1' <<<"vsdkfgjhlicuhgdlgiuch, liuf hglkdfhgu dflkuhg dlfkugh qlkdghu serlkuhgkeruhg lksdfuhg lkdfuhg kleruzrhgk dfuhlkdfuhg lkdfuhg lkuzth kldfuhg lkdufhg lkudshfglk fudhgdflkhgus lkdsufhg lkudhfg lkudfhsglks dufhsg kluhlgkdsfuhg "
    vsdkfgjhlicuhgdlgiuch, LIUF HGLKDFHGU DFLKUHG DLFKUGH QLKDGHU SERLKUHGKEruhg lksdfuhg lkdfuhg kleruzrhgk dfuhlkdfuhg lkdfuhg lkuzth kldfuhg lkdufhg lkudshfglk fudhgdflkhgus lkdsufhg lkudhfg lkudfhsglks dufhsg kluhlgkdsfuhg
    Mais la question, c'est sed.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ sed 's/^\(.\{22\}\)\(.\{50\}\)/\1\U\2/'  <<<"vsdkfgjhlicuhgdlgiuch, liuf hglkdfhgu dflkuhg dlfkugh qlkdghu serlkuhgkeruhg lksdfuhg lkdfuhg kleruzrhgk dfuhlkdfuhg lkdfuhg lkuzth kldfuhg lkdufhg lkudshfglk fudhgdflkhgus lkdsufhg lkudhfg lkudfhsglks dufhsg kluhlgkdsfuhg "
    vsdkfgjhlicuhgdlgiuch, LIUF HGLKDFHGU DFLKUHG DLFKUGH QLKDGHU SERLKUHGKEruhg lksdfuhg lkdfuhg kleruzrhgk dfuhlkdfuhg lkdfuhg lkuzth kldfuhg lkdufhg lkudshfglk fudhgdflkhgus lkdsufhg lkudhfg lkudfhsglks dufhsg kluhlgkdsfuhg

Discussions similaires

  1. Script insérant le contenu d'un fichier dans une colonne MySQL
    Par Christophe P. dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 13/10/2015, 15h31
  2. Passer le contenu d'un fichier à un programme Java
    Par amelia dans le forum Général Java
    Réponses: 2
    Dernier message: 31/01/2010, 21h13
  3. passer directement le contenu d'un fichier à un programme
    Par Jasmine80 dans le forum Windows XP
    Réponses: 1
    Dernier message: 21/01/2009, 08h56
  4. Passer en argument le contenu d'un fichier
    Par menuge dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 22/09/2006, 13h55
  5. Réponses: 1
    Dernier message: 12/02/2003, 09h36

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