[UNIX][awk] afficher en ignorant les MAJ/MIN

Résolu
Karamurat Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -  
Karamurat Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

je chechre la commande permettant dans "awk" d'ignorer les majuscules/miniscules ,
je sais que la commande "grep" le fait avec l'option -i

je cherche donc l'alternative de l'option -i de "grep" pour la commande "awk"

(man de grep avec l'option -i :Ignore uppercase/lowercase distinctions during comparisons.)

ex: (avec "grep")
grep -i "^lawsoncompanyI" > cieI 
grep -i "^lawsoncompanyF" > cieF 


Merci d'avance ;)
Configuration: Windows XP
Firefox 2.0.0.6

5 réponses

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

    c'est toujours i
    lami20j@deb:~$ echo Test | awk '/test/{print}'
    lami20j@deb:~$ echo Test | awk '/test/i{print}'
    Test
    
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut lami20j,

      Désolé de te contrarier, mais c'est raté sur ce coup là ;-((
      [tmpfs]$ echo Test | awk '/lamy20j/i{print}'
      Test
      Par contre en redéfinissant la variable "IGNORECASE" à la valeur "1" (par défaut à 0)ça roule :
      [tmpfs]$ cat plop
      
      je chechre la commande permettant dans "awk" d'ignorer les majuscules/miniscules ,
      je sais que la commande "grep" le fait avec l'option -i
      
      je cherche donc l'alternative de l'option -i de "grep" pour la commande "awk"
      
      (man de grep avec l'option -i :Ignore uppercase/lowercase distinctions during comparisons.)
      
      ex: (avec "GreP")
      
      grep -i "^lawsoncompanyI" > cieI
      grep -i "^lawsoncompanyF" > cieF
      
      
      [tmpfs]$ awk '/grep/ { print $0}' plop
      
      je sais que la commande "grep" le fait avec l'option -i
      je cherche donc l'alternative de l'option -i de "grep" pour la commande "awk"
      (man de grep avec l'option -i :Ignore uppercase/lowercase distinctions during comparisons.)
      grep -i "^lawsoncompanyI" > cieI
      grep -i "^lawsoncompanyF" > cieF
      
      [tmpfs]$ awk 'BEGIN { IGNORECASE = 1 } /grep/ { print $0}' plop
      
      je sais que la commande "grep" le fait avec l'option -i
      je cherche donc l'alternative de l'option -i de "grep" pour la commande "awk"
      (man de grep avec l'option -i :Ignore uppercase/lowercase distinctions during comparisons.)
      ex: (avec "GreP")
      grep -i "^lawsoncompanyI" > cieI
      grep -i "^lawsoncompanyF" > cieF
      [tmpfs]$ 
      ;-))
      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  
         
        Salut,

        Désolé de te contrarier, mais c'est raté sur ce coup là ;-((

        Non, tu ne me contraries pas.
        Au contraire j'ai appris encore une chose que je ne savais pas.

        Merci.

        Karamurat voici un lien qui pourra être utile Regexp - The GNU Awk User's Guide
        0
  2. Karamurat Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   2
     
    hmm...

    Comment pourai-je l'intégrer dans ce sript , pour qu'il ignore si "lawson" soit en Min/Maj :

    MODULE_LIST="AM AP AR BL"
    
    for MODULE in $MODULE_LIST
    do
    awk -F " " '
    BEGIN{comp=0}
    
     /^law.*I/ {full="" }  # Inquiry access
    
     /^law.*F/ {full="1"}  # Full access
    
     /^lawson.*: [0-9][0-9]*$/{
            x=++comp - 1
            if(x) s=sprintf("%d",x)
            else s=""
    
            printf("\"%s-%s\",\"%s\",\"%s\",%s,%s,%s,\"    !\",\"~~~~~~~~~~~~~~~\",%s\n",
            ROLE, LEVEL, DB, MODULE, s, $2, $2, full)}
    
     /^lawson.*: [0-9][0-9]*-[0-9][0-9]*$/{
            x=++comp - 1
            if(x) s=sprintf("%d",x)
            else s=""
    
            printf("\"%s-%s\",\"%s\",\"%s\",%s,%s,%s,\"    !\",\"~~~~~~~~~~~~~~~\",%s\n",
            ROLE, LEVEL, DB, MODULE, s,substr($2,1,match($2,"-")-1), substr($2,match($2,"-")+1,4), full)}
    
    
          ' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE  < comp_4.txt
    done
    
    


    sachant que mon fichier d'entrer peut etre ceci :

    lawsoncompanyF: 2
    LawsoncompanyF: 4-5
    lawsoncompanyf: 7-9
    lawsoncompanyF: 12
    lawsoncompanyF: 15-18
    lawsoncompanyF: 20
    lawsonCompanyF: 23-24
    Lawsoncompanyf: 29
    lawsoncompanyF: 32-34
    lawsoncompanyF: 38
    lawsoncoMpanyF: 41
    LawsoncompanyF: 43-44
    lawsoncompanyF: 4666-4766
    0
  3. Karamurat Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   2
     
    hmm... la manip plus haut avec "IGNORECASE" ne fonctionne pas , il semblerai qu'elle est une extension spécifique de Gnu AWK, et comme je suis en ksh ... IGNORCEASE ne fonctionne pas en ksh .

    j'ai donc utiliser tolower

    plusieurs choix possibles :

    /^[lL][aA][wW].*I/ { ...


    tolower($0) ~ /^law.*i/ { ...


    { $0 = tolower($0) }
    /^law.*i/ {...
    ...


    La dernière permet de travailler en minuscules sur le reste du script awk, mais on perd les majuscules du teste traité.
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Et comme ça, ça le fait pas ?
    [tmpfs]$ cat plop
    
    lawsoncompanyF: 2
    LawsoncompanyF: 4-5
    lawsoncompanyf: 7-9
    lawsoncompanyI: 12
    lawsoncompanyF: 15-18
    lawsoncompanyi: 20
    lawsonCompanyF: 23-24
    Lawsoncompanyf: 29
    lawsoncompanyi: 32-34
    lawsoncompanyF: 38
    lawsoncoMpanyF: 41
    LawsoncompanyI: 43-44
    lawsoncompanyF: 4666-4766
    
    [tmpfs]$ awk 'tolower($1) ~ /^lawsoncompany[fi]/ {print $0 }' plop
    
    lawsoncompanyF: 2
    LawsoncompanyF: 4-5
    lawsoncompanyf: 7-9
    lawsoncompanyI: 12
    lawsoncompanyF: 15-18
    lawsoncompanyi: 20
    lawsonCompanyF: 23-24
    Lawsoncompanyf: 29
    lawsoncompanyi: 32-34
    lawsoncompanyF: 38
    lawsoncoMpanyF: 41
    LawsoncompanyI: 43-44
    lawsoncompanyF: 4666-4766
    
    [tmpfs]$
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Karamurat Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   2
     
    {^_'} Impeccable !! {^_^}
    0