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

  1. #1
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    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
    Signé : Capitaine Jean-Luc Picard

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    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
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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