Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/04/2022, à 14:15

ar barzh paour

[Résolu] awk me met le bazar

bonjour (j'essaie de ne pas oublier !!)

Résolu en installant gawk

d'après le post ~8 , ce serait l'utilisation de la fonction substr que je fais qui me met le bazar
en 20.04 je n'ai pas de souci mais en 22.04 si
je modifie le titre dans ce sens

ça se complique!!
je viens de transférer mon application sur mon portable qui est aussi en 20.04
et j'obtiens le même phénomène

ce n'est donc pas 22.04 qui est en cause mais quoi?

le problème se pose alors comme ça :
pourquoi dans le résultat est-il correct sur mon PC et pas sur mon portable

je re-modifie le titre
passez directement au post #8





je n'arrive pas à savoir pourquoi j'ai une différence de résultat entre 20.04 et 22.04
et galère pour arriver à expliquer ce qui se passe  .. j'ai une application qui me génère le fichier suivant

=============================================================
recherche dans le dictionnaire :  e 0 CONT FALSE dico
paramètres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramètres reçus
fichier de recherche :
/media/Data/brezhoneg/DIC/source/dico.csv


contenant    =>[eéêèëεə]<=    dans la ligne
Bre(1);où(2);fra(3);type(4);plu_rad(5);pl](6);ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7);syn(8);g9;exemple(10);Classement(11);Accent(12);Remarque(13)
e;a;à;é;ñ;è;
fin de recherche ./SH_n_cont


ce fichier est remis en forme via un script awk

et c'est à partir de ce script que j'ai des ennuis
en 20.04
j'obtiens

=============================================================
1   recherche dans le dictionnaire :  e 0 CONT FALSE dico
2  paramètres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramètres reçus
3  fichier de recherche :
4  /media/Data/brezhoneg/DIC/source/dico.csv

6
7    contenant    =>[eéêèëεə]<=    dans la ligne
8
Bre(1)                  où(2)      fra(3)                    type( plu_rad(5)   pl](6)            ãɑ€ʁəỹũĩõɔęεẽγʒ syn(8)            g9   
                                                             4)                                   ɥʃñɲŋλ(7)                             
10     exemple(10)
12     Accent(12)
13     Remarque(13)

e                       a          à                         é     ñ            è                                                       
11   fin de recherche ./SH_n_cont
fin de recherche-dans-dico




mais en 22.04 j'obtiens

1   =============================================================
2   recherche dans le dictionnaire :  e 0 CONT FALSE dico
3   paramÚtres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramÚtres reçus
4   fichier de recherche :
5   /media/Data/brezhoneg/DIC/source/dico.csv
6   
7   
8    contenant    =>[eéêÚëεə]<=    dans la ligne

Bre(1)                  où(2)     fra(3)                    type( plu_rad(5)   pl](6)            ãɑ€ʁəỹŠsyn(8)            g9   
                                                             4)                                   ©Ä©ÃµÉ”ęεẜγʒɥʃñɲŋλ(7)                       
10     exemple(10)
12     Accent(12)
13     Remarque(13)

e                       a          à                        é    ñ           Ãš                                                       
11   fin de recherche ./SH_n_cont
fin de recherche-dans-dico

déjà pourquoi cette différence  ?



ensuite ce fichier est affiché via zenity
en 20.04 pas de souci
mais en 22.04
l'affichage est le suivant

2022-04-09:12-06-53
recherche de <e> en position CONT

1   =============================================================
2   recherche dans le dictionnaire :  e 0 CONT FALSE dico
3   paramètres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramètres reçus
4   fichier de recherche :
5   /media/Data/brezhoneg/DIC/source/dico.csv
6   
7   
8    contenant    =>[eéêèëεə]<=    dans la ligne

Bre(1)                  où(2)     fra(3)                    type( plu_rad(5)   pl](6)            ãɑ€ʁəỹ


deux remarques
1-
"paramètres" en 22.04 est transformé en "paramÚtres" mais est bien affiché par zenity "paramètres"
2-
certains caractères [eéêèëεə] sont transformés en [eéêÚëεə]] mais ne gènent pas zenity [eéêèëεə]
par contre au moins un caractère pose problème et plante zenity qui affiche bien ãɑ€ʁəỹ mais pas la suite

une piste ?

Dernière modification par ar barzh paour (Le 12/04/2022, à 15:32)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#2 Le 09/04/2022, à 14:19

diesel

Re : [Résolu] awk me met le bazar

A vue de nez, tu as un problème de "locales".

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#3 Le 09/04/2022, à 14:20

ar barzh paour

Re : [Résolu] awk me met le bazar

en remarque je mets  le script utilisé

#! /bin/awk

#l'appel se fait par SH_rech_dico
#awk -f formatdico.awk "fic1" > "fic2" 
 
# prend source  formaté :   xx;yy;zz;tt;....;xxx)
#bre;où(2);fra(3);type(4);plu_rad(5);pl](6);pron(7);syn(8);m],f](9);exemple(10);class(11);accent(12);rem (13) 
#23 ; 7   ; 25   ; 5     ; 10       ; 17   ; 10    ; 10   ; 5      ; 4


function calcul_c1_c2 (mot , L_Max) {

# renvoi ch1;ch2 tels que ch1<=L_Max
# si "mot" est coupé, deux est positionné à "true"

reste=""
sub(" ,",",",mot)           # supprime l'espace devant une virgule

pos=index(mot,",")          # recherche la première virgule

if (pos==0) {               # PD XVI , dkl
   pos=length(mot)           # pos2 : 8   
   }
   
c1=substr(mot,1,pos)         # PD XVI ,
c2=substr(mot,pos+1,255)     #  dkl
sub("^ ","",c2)              # dkl ( supprime l'espace de début )

#    c1       c2
# .......,............

# traitement de c1
if (length(c1)<=L_Max) {        
   ch[1]=c1                   # PD XVI
   reste=""
   }
else {
   ch[1]=substr(c1,1,L_Max)
   reste=substr(c1,1+L_Max,length(c1))
   sub("^ ","",reste)
   sub("^,","",reste)
   sub("^ ","",reste) 
   }
 
# traitement de c2
if (c2=="") {
    ch[2]=reste
    }
else {
     if (reste=="")
        ch[2]=c2
     else 
        ch[2]=reste c2
     }
  
if (ch[2]!="") {
     deux="true" #paramètre global modifié
     }  

return ch[1]";"ch[2] # pas le droit de renvoyer ch ?

}

BEGIN	{
	FS=";"
	L1=23
	L2=10
	L3=25
	L4=5
	L5=12
	L6=17
	L7=15
	L8=17
	L9=5
	L=L1+L2+L3+L4+L5+L7+L8+L9
	marge=4
	print
	}

{

	deux="false"

	if  ( NF < 2 ) {  
	    # imprime tel quel les lignes non formatées x;x;x;x;x;x;
		print NR , " ", $0
		}
	else {
	if (length($1)>L1) {
		ch11=substr($1,1,L1)
		ch21=substr($1,1+L1,L1)
		deux="true"
	}
	else {
		ch11=$1
		ch21=""
	}
	

    split(calcul_c1_c2($2,L2),tab,";")
	ch12=tab[1]
	ch22=tab[2]

    split(calcul_c1_c2($3,L3),tab,";")
	ch13=tab[1]
	ch23=tab[2]	
	


	if (length($4)>L4) {
		ch14=substr($4,1,L4)
		ch24=substr($4,1+L4,L4)
		deux="true"
	}
	else {
		ch14=$4
		ch24=""
	}
	
	if (length($5)>L5) {
		ch15=substr($5,1,L5)
		ch25=substr($5,1+L5,L5)
		deux="true"
	}
	else {
		ch15=$5
		ch25=""
	}

	if (length($6)>L6) {
		ch16=substr($6,1,L6)
		ch26=substr($6,1+L6,L6)
		deux="true"
	}
	else {
		ch16=$6
		ch26=""
	}


    split(calcul_c1_c2($7,L7),tab,";")
	ch17=tab[1]
	ch27=tab[2]	
	
	if (length($8)>L8) {
		ch18=substr($8,1,L8)
		ch28=substr($8,1+L8,L8)
		deux="true"
	}
	else {
		ch18=$8
		ch28=""
	}								
	
	if (length($9)>L9) {
		ch19=substr($9,1,L9)
		ch29=substr($9,1+L9,L9)
		deux="true"
	}
	else {
		ch19=$9
		ch29=""
	}	
	
	printf ("\n%-"L1"s %-"L2"s %-"L3"s %-"L4"s %-"L5"s %-"L6"s %-"L7"s %-"L8"s %-"L9"s",ch11,ch12,ch13,ch14,ch15,ch16,ch17,ch18,ch19)

	if (deux == "true") {
	    printf ("\n%-"L1"s %-"L2"s %-"L3"s %-"L4"s %-"L5"s %-"L6"s %-"L7"s %-"L8"s %-"L9"s",ch21,ch22,ch23,ch24,ch25,ch26,ch27,ch28,ch29)
	}

	if ( $10 !~ "^$" )
	    {
	        if (length($10)<L) {
	            printf ("\n10 %-"marge"s%s","",$10)
	        }
	        else {
	            # (il faudrait chercher où couper)
	            printf ("\n10 %-"marge"s%s","",substr($10,1,L))
	            printf ("\n   %-"marge"s%s","",substr($10,L+1,L))
	        }    
		}
		
		
		
	if ( $12 !~ "^$" )
	    {
	        if (length($12)<L) {
	            printf ("\n12 %-"marge"s%s","",$12)
	        }
	        else {
	            # (il faudrait chercher où couper)
	            printf ("\n12 %-"marge"s%s","",substr($12,1,L))
	            printf ("\n   %-"marge"s%s","",substr($12,L+1,L))
	        }    
		}
		
		
	if ( $13 !~ "^$" )
	    {
	        if (length($13)<L) {
	            printf ("\n13 %-"marge"s%s","",$13)
	        }
	        else {
	            # (il faudrait chercher où couper)
	            printf ("\n13 %-"marge"s%s","",substr($13,1,L))
	            printf ("\n   %-"marge"s%s","",substr($13,L+1,L))
	        }    
		}
		
	printf ("\n")	
	}
}

PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#4 Le 09/04/2022, à 14:22

ar barzh paour

Re : [Résolu] awk me met le bazar

@diesel
ah les locales , j'ai déjà vu ça quelque part !!!!
mais 20.04=22.04

jpb@U22-04:~$ locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
jpb@U22-04:~$ 
jpb@U20-04-e3:~$ locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
jpb@U20-04-e3:~$ 

Dernière modification par ar barzh paour (Le 09/04/2022, à 14:36)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#5 Le 10/04/2022, à 09:05

ar barzh paour

Re : [Résolu] awk me met le bazar

awk -f formatdico.awk <<<"eéêèëεə"
1   eéêèëεə
awk -f formatdico.awk <<<"ãɑ€ʁəỹũĩõɔęεẽγʒ"
1   ãɑ€ʁəỹũĩõɔęεẽγʒ

est correct

mais si je modifie l'entrée , le premier champ dépassant une certaine valeur, il est coupé et cela génère une anomalie en 22.04

awk -f formatdico.awk <<<"ãɑ€ʁəỹũĩõɔęεẽγʒ;;;"
ãɑ€ʁəỹũĩõɔ                                                                                                                  
εẽγʒ  

je suis un peu perdu ...

il faut que je vois pourquoi le fichier intermédiaire contient des caractères eéêÚëεə] etc

mais en 22.04 j'obtiens

    1   =============================================================
    2   recherche dans le dictionnaire :  e 0 CONT FALSE dico
    3   paramÚtres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramÚtres reçus
    4   fichier de recherche :
    5   /media/Data/brezhoneg/DIC/source/dico.csv
    6   
    7   
    8    contenant    =>[eéêÚëεə]<=    dans la ligne

    Bre(1)                  où(2)     fra(3)                    type( plu_rad(5)   pl](6)            ãɑ€ʁəỹŠsyn(8)            g9   
                                                                 4)                                   ©Ä©ÃµÉ”ęεẜγʒɥʃñɲŋλ(7)                       
    10     exemple(10)
    12     Accent(12)
    13     Remarque(13)

    e                       a          à                        é    ñ           Ú                                                       
    11   fin de recherche ./SH_n_cont
    fin de recherche-dans-dico

Dernière modification par ar barzh paour (Le 10/04/2022, à 09:11)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#6 Le 10/04/2022, à 09:23

iznobe

Re : [Résolu] awk me met le bazar

Bonjour ,est ce que le bash est le meme et configuré de la meme maniere pour ce qui est des langues et de l' encodage dans les 2 OS ?
ainsi que le terminal .
Dans mon terminal : preferences => profil sans nom => onglet compatibilité => codage = unicode UTF8 .

Dernière modification par iznobe (Le 10/04/2022, à 09:25)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#7 Le 10/04/2022, à 19:44

ar barzh paour

Re : [Résolu] awk me met le bazar

@iznobe
pour le bash je ne sais pas
pour le terminal oui ,20.04 et 22.04 unicode-UTF-8

j'essaierai d'investiguer la semaine prochaine ....

Dernière modification par ar barzh paour (Le 10/04/2022, à 19:45)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#8 Le 11/04/2022, à 11:38

ar barzh paour

Re : [Résolu] awk me met le bazar

hello
je n'arrive pas à faire plus simple (*)
le fichier script formatsimple.awk ci dessous

#! /bin/awk

#uniquement pour test des accents et caractère API
#awk -f formataccent.awk "fic1" > "fic2" 
 
# exemple de caractères API    ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7)
# exemple d'accents aàéèï
{
ch11=substr($1,1,5)
print ch11
}

le résultat dans 22.04

jpb@U22-04:/media/SH/DIC$ awk -f formatsimple.awk <<<"ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7)"
ãɑ
jpb@U22-04:/media/SH/DIC$ 

je devrais avoir comme en 20.04

ãɑ€ʁə

même le à ne passe pas

jpb@U22-04:/media/SH/DIC$ awk -f formatsimple.awk <<<"éèà"
éè
jpb@U22-04:/media/SH/DIC$ 






on doit pouvoir faire sans passer par un script quelque chose cmme
var="ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7)" ; awk-F";" -v var=$var '{print substr(var1,5)}' mais je n'y arrive pas sans script

Dernière modification par ar barzh paour (Le 11/04/2022, à 16:45)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#9 Le 12/04/2022, à 11:28

ar barzh paour

Re : [Résolu] awk me met le bazar

sur mon portable , le fichier d'origine suivant

    =============================================================
    recherche dans le dictionnaire :  e 0 CONT FALSE dico
    paramètres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramètres reçus
    fichier de recherche :
    /media/Data/brezhoneg/DIC/source/dico.csv

    contenant    =>[eéêèëεə]<=    dans la ligne
    Bre(1);où(2);fra(3);type(4);plu_rad(5);pl](6);ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7);syn(8);g9;exemple(10);Classement(11);Accent(12);Remarque(13)
    e;a;à;é;ñ;è;
    fin de recherche ./SH_n_cont

est transformé par awk -f formatdico.awk  ( voir le contenu du script en #3)
en

    1   =============================================================
    2   recherche dans le dictionnaire :  e 0 CONT FALSE dico
    3   paramÚtres recus dans ./SH_n_cont :  e 0 FALSE dico fin de paramÚtres reçus
    4   fichier de recherche :
    5   /media/Data/brezhoneg/DIC/source/dico.csv
    6   
    7   
    8    contenant    =>[eéêÚëεə]<=    dans la ligne

    Bre(1)                  où(2)     fra(3)                    type( plu_rad(5)   pl](6)            ãɑ€ʁəỹŠsyn(8)            g9   
                                                                 4)                                   ©Ä©ÃµÉ”ęεẜγʒɥʃñɲŋλ(7)                       
    10     exemple(10)
    12     Accent(12)
    13     Remarque(13)

    e                       a          à                        é    ñ           Ú                                                       
    11   fin de recherche ./SH_n_cont
    fin de recherche-dans-dico

Dernière modification par ar barzh paour (Le 12/04/2022, à 11:29)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#10 Le 12/04/2022, à 12:23

MicP

Re : [Résolu] awk me met le bazar

Bonjour

Ou alors,
tu pourrais convertir l'UTF-8 en ASCII en utilisant la commande iconv :

michel@ubu20043lts:~$ echo "€eꚫεɩĩõÉεẜγÊɥñɲÅÎãỹũĩõęẽñɲŋ»" | iconv -f utf-8 -t ascii//TRANSLIT
EUReAas<<IuE(C)A(C)AuEIuaooeI3EEJPYA+-E2AIayuioeennn>>
michel@ubu20043lts:~$ 

Dernière modification par MicP (Le 12/04/2022, à 12:30)


Retour utilisable de commande
2.d  Le prompt final : permet de s'assurer que la commande est allée à son terme, permet de s'assurer que le retour de commande a été copié/collé dans son intégralité et fournit dans certains cas d'autres informations très importantes.
voir le message #42

Hors ligne

#11 Le 12/04/2022, à 13:13

Tawal

Re : [Résolu] awk me met le bazar

Hello,

Peut-être une piste :

$ echo "ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7)" | LANG=fr_FR.UTF-8 awk '{a=substr($1,1,5); print a}'
ãɑ€ʁə
$
$ echo "ãɑ€ʁəỹũĩõɔęεẽγʒɥʃñɲŋλ(7)" | LANG=C awk '{a=substr($1,1,5); print a}'
ãɑ

Edit:
La vision de mon message posté me fait remarquer que pour LANG=C, il y a un caractère non imprimable en plus représenté par "? (en inverse_vidéo)".
Ce qui me fait penser que selon la locale utilisée, les caractères "graphiques" comptent pour 1 ou plusieurs.
Cela vient du fait qu'ils sont codés sur 1,2 ou 3 octets.
Donc, un caractère codé sur 2 octets, avec la LANG=C compte pour 2 et avec la LANG=fr_FR.UTF-8 compte pour 1.
Pour être plus clair :

$ printf "a" | xxd -p -c1
61
$ printf "ã" | xxd -p -c1
c3
a3
$

Du coup on a :

$ echo "ã" | LANG=C awk '{a=substr($1,1,2); print a}'
ã
$ echo "ã" | LANG=fr_FR.UTF-8 awk '{a=substr($1,1,1); print a}'
ã
$ 

Edit:
Évidemment :

$ echo "ã" | LANG=C awk '{a=substr($1,1,1); print a}'

$ 

(caractère ? en inverse vidéo, non visible ici)

Dernière modification par Tawal (Le 12/04/2022, à 13:27)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#12 Le 12/04/2022, à 13:53

Watael

Re : [Résolu] awk me met le bazar

salut,

c'est bien les mêmes versions de awk ?

awk -Wv

et si tu appelles explicitement gawk ?


Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 12/04/2022, à 14:21

ar barzh paour

Re : [Résolu] awk me met le bazar

@Watael
effectivement
non
sur mon portable 20.04

jpb@jpb-HP-ProBook-4710s:~$ awk -Wv
mawk 1.3.4 20200120
Copyright 2008-2019,2020, Thomas E. Dickey
Copyright 1991-1996,2014, Michael D. Brennan

random-funcs:       srandom/random
regex-funcs:        internal
compiled limits:
sprintf buffer      8192
maximum-integer     2147483647
jpb@jpb-HP-ProBook-4710s:~$ 

je ne sais pas si ça suffit , j'ai remplacé #! /bin/awk par #! /bin gawk dans le script formatdico.awk
mais ça donne le même (mauvais) résultat

sur mon PC en 20.04

jpb@U20-04-e3:~$ awk -Wv
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)
Copyright © 1998, 1991-2019 Free Software Foundation.

Ce programme est un logiciel libre ; vous pouvez le redistribuer et le
modifier selon les termes de la licence publique générale GNU (GNU
General Public License), telle que publiée par la Free Software
Foundation ; soit selon la version 3 de cette licence, soit selon une
version ultérieure de votre choix.

Ce logiciel est distribué en espérant qu'il sera utile, mais SANS AUCUNE
GARANTIE, y compris les garanties implicites D'ADAPTATION À UN BUT
SPÉCIFIQUE et de COMMERCIALISATION. Pour plus d'informations à ce
sujet, consultez le texte de la licence publique générale GNU (GNU
General Public License).

Vous devriez avoir reçu copie de la licence publique générale GNU
(GNU General Public License) avec ce programme. Sinon, consultez
http://www.gnu.org/licenses/.
jpb@U20-04-e3:~$ 

et #! /bin/gawk me donne le même résultat (correct) que #! /bin/awk


et je vais voir ce que ça donne en 22.04
surprise !!! ressemble bigrement à celui de mon portable !!!

jpb@U22-04:~$ awk -Wv
mawk 1.3.4 20200120
Copyright 2008-2019,2020, Thomas E. Dickey
Copyright 1991-1996,2014, Michael D. Brennan

random-funcs:       srandom/random
regex-funcs:        internal
compiled limits:
sprintf buffer      8192
maximum-integer     2147483647
jpb@U22-04:~$ 

et comme sur mon portable , la modification de awk en gawk n'améliore pas le résultat

Dernière modification par ar barzh paour (Le 12/04/2022, à 14:39)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#14 Le 12/04/2022, à 15:07

ar barzh paour

Re : [Résolu] awk me met le bazar

en vérifiant sur mon portable , je vois que gawk n'est pas présent !!!

jpb@jpb-HP-ProBook-4710s:~$ sudo apt install gawk

et maintenant

jpb@jpb-HP-ProBook-4710s:~$ awk -Wv
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)
Copyright © 1998, 1991-2019 Free Software Foundation.

Ce programme est un logiciel libre ; vous pouvez le redistribuer et le
modifier selon les termes de la licence publique générale GNU (GNU
General Public License), telle que publiée par la Free Software
Foundation ; soit selon la version 3 de cette licence, soit selon une
version ultérieure de votre choix.

Ce logiciel est distribué en espérant qu'il sera utile, mais SANS AUCUNE
GARANTIE, y compris les garanties implicites D'ADAPTATION À UN BUT
SPÉCIFIQUE et de COMMERCIALISATION. Pour plus d'informations à ce
sujet, consultez le texte de la licence publique générale GNU (GNU
General Public License).

Vous devriez avoir reçu copie de la licence publique générale GNU
(GNU General Public License) avec ce programme. Sinon, consultez
http://www.gnu.org/licenses/.
jpb@jpb-HP-ProBook-4710s:~$ 


et ça résout le problème ...... sur mon portable , à voir maintenant sur 22.04 , je pense que c'est du même acabit!!!


effectivement idem en 22.04
et tout rentre dans l'ordre
un grand merci Watael
j'aurai pataugé longtemps...

merci aussi aux autres intervenant qui ont essayé d'apporter une solution

je ne sais pas si je vais utiliser 22.04 mais mon portable en 20.04  certainement cet été !!!!!!


Watael un lien sur ce qui compare awk , gawk mawk ?

Dernière modification par ar barzh paour (Le 12/04/2022, à 15:37)


PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400 Ubuntu 22.04 et 20.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 22.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#15 Le 12/04/2022, à 16:29

Watael

Re : [Résolu] awk me met le bazar

le shebang n'est pas utilisé quand tu appelles le script avec awk -f.

pour que le shebang (g)awk soit utile, le script doit être exécutable, et le shebang doit avoir cette forme :

#!/bin/gawk -f

mawk, si je ne dis pas de bêtise, est une implémentation POSIX de awk (un peu comme dash pour bash)
https://www.gnu.org/software/gawk/manua … POSIX.html
et
https://www.gnu.org/software/gawk/manua … 2fGNU.html

Dernière modification par Watael (Le 12/04/2022, à 16:29)


Welcome to sHell. · eval is evil.

Hors ligne

#16 Le 12/04/2022, à 17:27

Tawal

Re : [Résolu] awk me met le bazar

ar barzh paour a écrit :

merci aussi aux autres intervenant qui ont essayé d'apporter une solution

De rien, je suis juste content de m'être planté lol

Et je confirme pour mawk :

man mawk a écrit :

mawk conforms to the POSIX 1003.2 (draft 11.3) definition of the AWK language which contains a few features  not described in the AWK book, and mawk provides a small number of extensions.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne