[Shell] enlever les 11 premier caractères

Résolu
JOBiJOBa2 Messages postés 93 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
J'aimerais enlever les 11 premier caractère d'une chaine.
Je la récupère d'un un fichier et veut transformer ma chaine pour la mettre dans un autre fichier.
while read line
  do

     echo "$line"
##transformation de la chaine
echo "$newline" >> newfic.txt

done < fictempo.txt

Comment retirer les 11 premier caractères de cette chaine ?

Merci d'avance
^^
Configuration: Windows XP
Firefox 2.0.0.14

5 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    $ var="123456789101112"
    $ echo ${var:11}
    1112
    
    ;-))
    9
    1. JOBiJOBa2 Messages postés 93 Statut Membre 5
       
      J'ai un petit problème lors de mon "echo ${var:11}", il me dit "ksh: ${var:11}: bad substitution".
      Je ne vois pas ce que cela peut être.


      ^^
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > JOBiJOBa2 Messages postés 93 Statut Membre
         
        Arf ;-((

        N'oublie pas de préciser ton shell à chaque fois...
        echo ${var} | sed 's/.\{11\}//'
        ;-))
        0
      2. JOBiJOBa2 Messages postés 93 Statut Membre 5 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Désolé
        0
      3. JOBiJOBa2 Messages postés 93 Statut Membre 5 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Okey ça fonctionne merci encore
        0
  2. goulamass Messages postés 1427 Statut Membre 177
     
    Bonjour,

    En comptant les 11 premiers caractères.

    Je me souviens plus trop des commandes shell.

    Mais l'idée est :

    Récupère line

    For (0 , nb caractère , ++)
    tant que < 11 je fais rien
    dès que je dépasse 11 je recrée un nouvelle line caractère par caractère
    fin for

    Ecriture de al new line
    2
  3. eZula Messages postés 3509 Statut Contributeur 392
     
    Merci, je pensais néammoins qu'il y aurait une commande plus directe
    1
  4. eZula Messages postés 3509 Statut Contributeur 392
     
    Salut,

    juste de passage et à l'attention de jipicy, pour enlever les 11 derniers caractères, quelle serait la commande ? j'ai tenté echo ${var:0,-11} marche pô
    et par la même occasion, comment enlever simultanément les 3 premiers caractères et les 3 derniers ?

    echo $var | sed -e 's/.\{11\}$//' marche mais j'aimerais connaitre la solution dans l'esprit de la première commande

    PS : en bash

    Merci et désolé pour l'incruste
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Enlever les 11 derniers :
      echo ${var:0:$((${#var}-11))}
      enlever simultanément les 3 premiers caractères et les 3 derniers :
      echo ${var:3:$((${#var}-3))}
      ;-))
      0
      1. michelf > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        pour enlever les 3 permiers et 3 derniers caracteres (avec sh), il faut plutot :
        ${chaine:3:$((${#chaine}-3-3))}
        il me semble
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > michelf
         
        Exact, merci pour la correction ;-))
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    je pensais néammoins qu'il y aurait une commande plus directe
    Si tu pense à sed
    echo $var | sed 's/^.\{3\}\(.*\).\{3\}$/\1/'

    Mais bon, ce n'est pas très joli
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Il y a aussi :
      [tmpfs]$ var="123456789"
      
      [tmpfs]$ expr "$var" : "...\(.*\)..."
      456
      ;-))
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Re,

        Sûrement c'est plus joli.
        Pour s'amuser (je n'ai pas moyens de tester ;-))
        echo $var | cut -d'' -f4- | rev | cut -d'' -f4- | rev
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Marche pô ;-((

        cut: Le délimiteur doit être un caractère simple.

        Par contre comme ça ça marche :
        echo $var | cut  -b 4- | rev | cut -b 4- | rev
        ;-))
        0