Awk: récupérer le xème caractère d'une ligne

Résolu
tlep Messages postés 597 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

est-il possible avec awk (ou autre) de récupérer par exemple le 112ème caractère de chaque ligne pour un fichier donné ?

Merci :-)
Configuration: Windows Vista
Firefox 3.0

7 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    et aussi

    $ cut --byte=6 < plop
    A
    B
    C
    D
    E
    F
    3
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Yes, et pour le moment c'est la plus simple ;-)
      0
  2. tlep Messages postés 597 Statut Membre 118
     
    A priori j'ai trouvé en fait:

    toto="abcd"
    echo "$toto"|awk '{ print substr($0,2,1) }'
    =>b

    C'est bien awk :-)
    1
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      Non, ce n'est pas bien. Perl c'est bien :-DDDD
      Je n'ai pas moyen de tester, mais ça doit être quelque chose comme ça
      perl -ne 'print $1 if /^.{111}(.)/' fichier
      perl -ne 'print substr($_,111,1)' fichier
      perl -ne '($x)=unpack("x111 A1",$_);print "$x\n";' fichier
      --
      106485010510997108
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    [tmpfs]$ cat plop
    12345A78910
    12345B78910
    12345C78910
    12345D78910
    12345E78910
    12345F78910
    
    [tmpfs]$ sed 's/.\{5\}\(.\).*/\1/' plop
    A
    B
    C
    D
    E
    F
    
    [tmpfs]$
    ;-))
    1
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Je n'ai pas testé
    sed 's/^.\{111\}\(.\).*/\1/' fichier
    --
    106485010510997108
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Oups...

    Mieux vaut tard que jamais ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Ben, non.
      Tu viens de confirmer ce que je n'ai pas pu testé ;-))
      0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    en fait
    cut -b6
    pour être portable sur les Unixes non GNU/Linux
    0
  8. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Oui la solution avec cut, est la plus simple. Mais puisqu'elle se base sur le byte, s'il y a un accent dans la chaîne, ça marche plus. (Oui je sais, je suis un rabat-joie ^^).. La solution avec sed dans ce cas marche merveilleusement bien.
    Ou alors :
    for i in $(<plop); do echo ${i:3:1}; done
    Cdlt
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      (Oui je sais, je suis un rabat-joie ^^)..

      Ben, un o****** ne dure pas très longtemps de toute façon ;-DDDDD
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      [tmpfs]$ cat plop
      12345A78910
      12345B78910
      12345C78910
      ÉÙÔ45D78910
      1234éE78910
      12À45F78910
      
      [tmpfs]$ cut -b 6 plop
      A
      B
      C
      D
      E
      F
      
      [tmpfs]$
      Marche bien ;-\

      ;-))
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Etrange. Que vaut ta variable LANG ?
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        $ echo $LANG
        fr_FR
        0
      3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        La voilà l'explication ^^.
        En fr_FR.UTF-8, la solution par byte ne marche pas puisque é sera codé sur deux bytes.
        0