#1 Le 29/04/2020, à 21:15
- philoeil
[RESOLU] AWK usage separateur de champs mal maitrisé
Bonjour,
Je ne parviens pas à comprendre l’usage du separateur de champs F et FS de AWK
J'ai fait 2 tests sans parvenir à avoir le résultat attendu
Fichier ActionDoublons.txt
§§§§§§ Empreinte MD5 identique pour : 0cbbff1c0f1c5bdc5ce8e2b8f483e560 des fichiers suivants :
Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt
Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt
§§§§§§ Empreinte MD5 identique pour : 10a6ada757ec577d3a3db0654dd60a45 des fichiers suivants :
Racine § F2.CpBBID2_EspaceApresNef.nef
Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef
Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef
Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef
Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef
Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef
§§§§§§ Empreinte MD5 identique pour : 93243bbb48aa8de88968bee06e6c8c9b des fichiers suivants :
Racine § F2BBID1_1 espaceApresJpg.jpg
Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg
Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg
Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg
Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg
Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg
§§§§§§ Empreinte MD5 identique pour : d3fad710647642c327aceeec1b773a71 des fichiers suivants :
Racine § F2_F07 Fichier avec espaces.mp3
Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3
Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3
Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3
§§§§§§ Empreinte MD5 identique pour : f6638c0e380e1a9a89b026c2f33600f9 des fichiers suivants :
Racine/Rep2.2 Espace Doublons § FichierTxt3.txt
Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt
Racine/Rep2.3DossierNormal § FichierTxt3.txt
Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt
Test1 :
Code script Info3 :
#!/bin/bash
echo ---$0------------------------------------------ INFO 3---------------------------------------------------------
REP="/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt"
echo "Ci-après la liste des noms des répertoires avec le nombre de doublons dans ce répertoire/nombre de fichiers présents, je suis ici $PWD "
awk 'BEGIN { print "Début de Info3 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< : "; FS=" § " }
{
if (/^\s*§+/) { next }
else
{ NomRep[$1]=$1; NbRepDbl[$1]+=1; printf ("NomRep " NomRep[$1] "--- Nbre Chps :" NF "---" $0" \n");
"find "NomRep[$1]" -maxdepth 1 ! -name \".*\" -type f | wc -l" | getline NbDblonRep[$1];}
}
END {
for ( Dblon in NbRepDbl) {
printf("Repertoire doublon : %15s ===> %3d doublons sur %3s " , NomRep[Dblon] , NbRepDbl[Dblon] , NbDblonRep[Dblon] );
print("fichiers \n");
}
}' "$REP"
Resultat le nombre de champs est bien de 2, mais il ne traite pas correctement find et le decompte pour les dossier avec des espaces dans le chemin de repertoires:
hil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ ./Info3.awk
---./Info3.awk------------------------------------------ INFO 3---------------------------------------------------------
Ci-après la liste des noms des répertoires avec le nombre de doublons dans ce répertoire/nombre de fichiers présents, je suis ici /home/phil/Documents/JeCodeShell/TestAWK
Début de Info3 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< :
NomRep Racine/Rep2.3DossierNormal--- Nbre Chps :2---Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt
NomRep Racine--- Nbre Chps :2---Racine § F2.CpBBID2_EspaceApresNef.nef
NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef
find: ‘Racine/Rep2.2’: Aucun fichier ou dossier de ce type
find: ‘Espace’: Aucun fichier ou dossier de ce type
find: ‘Doublons’: Aucun fichier ou dossier de ce type
NomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef
find: ‘Racine/Rep2.2’: Aucun fichier ou dossier de ce type
find: ‘Espace’: Aucun fichier ou dossier de ce type
find: ‘Doublons’: Aucun fichier ou dossier de ce type
find: ‘/Rep2.2.2.1’: Aucun fichier ou dossier de ce type
find: ‘Doss’: Aucun fichier ou dossier de ce type
find: ‘Espace’: Aucun fichier ou dossier de ce type
NomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine--- Nbre Chps :2---Racine § F2BBID1_1 espaceApresJpg.jpg
NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg
NomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg
NomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg
NomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg
NomRep Racine--- Nbre Chps :2---Racine § F2_F07 Fichier avec espaces.mp3
NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3
NomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3
NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § FichierTxt3.txt
NomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt
NomRep Racine/Rep2.3DossierNormal--- Nbre Chps :2---Racine/Rep2.3DossierNormal § FichierTxt3.txt
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt
Repertoire doublon : Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace ===> 4 doublons sur 0 fichiers
Repertoire doublon : Racine/Rep2.3DossierNormal ===> 2 doublons sur 3 fichiers
Repertoire doublon : Racine/Rep2.2 Espace Doublons ===> 4 doublons sur 0 fichiers
Repertoire doublon : Racine ===> 3 doublons sur 3 fichiers
Repertoire doublon : Racine/REPORIAvecFichierPb ===> 5 doublons sur 6 fichiers
Repertoire doublon : Racine/Rep2foisDblons ===> 4 doublons sur 4 fichiers
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$
second cas
Même fichier Ationdoublons.txt
Mon code :
#!/bin/bash
echo " ---------------------$0------------------------ INFO 3--------------------------------------------------------"
REP="/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt"
echo "Ci-après la liste des noms des répertoires avec le nombre de doublons dans ce répertoire/nombre de fichiers présents, je suis ici $PWD "
awk -F[' § '] 'BEGIN { print "Début de Info3 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< : "; }
{
if (/^\s*§+/) { next }
else
{ NomRep[$1]=$1; NbRepDbl[$1]+=1; printf ("NomRep " NomRep[$1] "--- Nbre Chps :" NF "---" $0" \n");
"find "NomRep[$1]" -maxdepth 1 ! -name \".*\" -type f | wc -l" | getline NbDblonRep[$1];}
}
END {
for ( Dblon in NbRepDbl) {
printf("Repertoire doublon : %15s ===> %3d doublons sur %3s " , NomRep[Dblon] , NbRepDbl[Dblon] , NbDblonRep[Dblon] );
print("fichiers \n");
}
}' "$REP"
Resultat : Le nombre de champs n'est plus de 2, le nombre de doublons est faux pour le chemin de dossier avec des espaces "Racine/Rep2.2 Espace Doublons "
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ ./Info3_FS.awk
---------------------./Info3_FS.awk------------------------ INFO 3--------------------------------------------------------
Ci-après la liste des noms des répertoires avec le nombre de doublons dans ce répertoire/nombre de fichiers présents, je suis ici /home/phil/Documents/JeCodeShell/TestAWK
Début de Info3 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< :
NomRep Racine/Rep2.3DossierNormal--- Nbre Chps :4---Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :4---Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt
NomRep Racine--- Nbre Chps :5---Racine § F2.CpBBID2_EspaceApresNef.nef
NomRep Racine/Rep2.2--- Nbre Chps :9---Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef
find: ‘Racine/Rep2.2’: Aucun fichier ou dossier de ce type
NomRep Racine/Rep2.2--- Nbre Chps :11---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :6---Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef
NomRep Racine--- Nbre Chps :6---Racine § F2BBID1_1 espaceApresJpg.jpg
NomRep Racine/Rep2.2--- Nbre Chps :8---Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg
NomRep Racine/Rep2.2--- Nbre Chps :11---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg
NomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg
NomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :6---Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg
NomRep Racine--- Nbre Chps :7---Racine § F2_F07 Fichier avec espaces.mp3
NomRep Racine/Rep2.2--- Nbre Chps :10---Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3
NomRep Racine/Rep2.2--- Nbre Chps :12---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :7---Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3
NomRep Racine/Rep2.2--- Nbre Chps :7---Racine/Rep2.2 Espace Doublons § FichierTxt3.txt
NomRep Racine/Rep2.2--- Nbre Chps :9---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt
NomRep Racine/Rep2.3DossierNormal--- Nbre Chps :4---Racine/Rep2.3DossierNormal § FichierTxt3.txt
NomRep Racine/REPORIAvecFichierPb--- Nbre Chps :4---Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt
Repertoire doublon : Racine/Rep2.3DossierNormal ===> 2 doublons sur 3 fichiers
Repertoire doublon : Racine/Rep2.2 ===> 8 doublons sur 0 fichiers
Repertoire doublon : Racine ===> 3 doublons sur 3 fichiers
Repertoire doublon : Racine/REPORIAvecFichierPb ===> 5 doublons sur 6 fichiers
Repertoire doublon : Racine/Rep2foisDblons ===> 4 doublons sur 4 fichiers
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$
Pouvez-vous m'aider à comprendre le problème ?
Merci bien
Dernière modification par philoeil (Le 30/04/2020, à 21:58)
Hors ligne
#2 Le 30/04/2020, à 00:28
- kamaris
Re : [RESOLU] AWK usage separateur de champs mal maitrisé
find ne traite pas correctement les noms de répertoire avec des espaces, car tu ne les as pas protégés avec des guillemets.
Et comme tu appelles find depuis awk, ces guillemets doivent eux-mêmes être protégés par un antislash :
"find \"" NomRep[$1] "\" -maxdepth 1 ! -name \".*\" -type f | wc -l" | getline NbDblonRep[$1]
Concernant le séparateur de champs, le premier que tu as mis est le bon : FS=" § ".
Le second que tu as essayé n'est pas adapté au fichier d'entrée, mais en plus il est mal renseigné : c'est awk -F'[ § ]' (ou plus simplement awk -F'[ §]') et pas awk -F[' § '].
Il aurait aussi pu être renseigné dans la clause BEGIN, comme dans le premier cas : FS="[ §]".
Dernière chose : il vaut mieux éviter de nommer un script bash avec une extension .awk, qui devrait être réservée aux scripts awk.
Hors ligne
#3 Le 30/04/2020, à 11:25
- philoeil
Re : [RESOLU] AWK usage separateur de champs mal maitrisé
Bonjour,
Merci beaucoup Kamaris
C'est parfait, J'aurai peut-être une autre question dans l'apres-midi.
Ta réponse m'inquiète sur une autre partie du code ou je n'avais pas détecté de problème et ou j'utilise -F[' § ']
Le second que tu as essayé n'est pas adapté au fichier d'entrée,
Dans quel cas on utilise le separateur de champs dans Begin et dans quel cas en 1er argument ?
Merci encore
Hors ligne
#4 Le 30/04/2020, à 15:26
- kamaris
Re : [RESOLU] AWK usage separateur de champs mal maitrisé
Il se trouve que, par l'interprétation que le shell fait des différents caractères, awk -F[' § '] et awk -F'[ § ]' sont équivalents.
Mais à la lecture, on voit que ce que tu veux signifier correspond à awk -F'[ § ]' : on passe à awk l'expression régulière [ § ], placée entre guillemets simples, pour la protéger de toute interprétation par le shell.
Et encore une fois, la bonne écriture serait en fait awk -F'[ §]' (le second espace est inutile).
Dans quel cas on utilise le separateur de champs dans Begin et dans quel cas en 1er argument ?
L'un et l'autre sont équivalents, c'est une question de gout.
Ce sont les expressions régulières ' § ' et [ § ] qui ne sont pas équivalentes.
La première correspond simplement à la chaine ' § ', tandis que la seconde signifie « un caractère parmi espace, § ou espace ».
D'où le fait que la seconde est équivalente à [ §] : « un caractère parmi espace ou § ».
Hors ligne
#5 Le 30/04/2020, à 15:36
- philoeil
Re : [RESOLU] AWK usage separateur de champs mal maitrisé
Bonjour,
Et Merci encore beaucoup Kamaris c'est super clair, j'ai (cru avoir) tout compris
Au plaisir de te lire
Je modifie mon poste précédent pour enfin (peut-être) comprendre :
philoeil a écrit :
Dans quel cas on utilise le separateur de champs dans Begin et dans quel cas en 1er argument ?
L'un et l'autre sont équivalents, c'est une question de gout.
J'ai fait le test suivant pour valider l'explication et ma compréhension de celle-ci, malheureusement cela n'est pas équivalent (dans mes résultats) :
Code correct
#!/bin/bash
echo " ---------------------$0------------------------ INFO 4-Find appostrophe doublés- -begin FS=" § " ------"
REP="/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt"
RepSource="/home/phil/Documents/JeCodeShell/ShellEssaiRepDblons"
# --------------------------------------------- INFO 4 ---------------------------------------------------------
echo '$RepSource='"$RepSource"
echo 'REP='"$REP"
awk -v RepSource==\$RepSource 'BEGIN { print "-----------------------------------------------------Début de Info4 : "; FS=" § " }
{
if (/^\s*§+/) { next }
else
printf ("la variable $1 est actuellement : ") $1;
{ NomRep[$1]=$1; NbRepDbl[$1]+=1; printf ("NomRep " NomRep[$1] "--- Nbre Chps :" NF "---" $0" \n");
"find \""NomRep[$1]"\" -maxdepth 1 ! -name \".*\" -type f | wc -l" | getline NbDblonRep[$1]};
print("RepsSourceVariable :"$RepSource, "NbRepDbl : " NbRepDbl[$1]);
}
END {
for ( Dblon in NbRepDbl) {
if (NbDblonRep[Dblon]/NbRepDbl[Dblon]==1)
{ #print($RepSource);
printf ("Ci-après la liste des noms des répertoires sélectionnés comme supprimables automatiquement, création du fichier SupprimerCPCent.txt Lancement édition ")> "SupprimerCPCent.txt";
printf ("ASupprimer : \n" )>> "SupprimerCPCent.txt";
printf("Repertoire doublon : %15s ===> %3d doublons sur %3s \n" , NomRep[Dblon] , NbRepDbl[Dblon] , NbDblonRep[Dblon] )>> "SupprimerCPCent.txt";
}
}
}' "$REP"
Resultat correct :
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ ./Info4.awk
---------------------./Info4.awk------------------------ INFO 4-Find appostrophe doublés- -begin FS= § ------
$RepSource=/home/phil/Documents/JeCodeShell/ShellEssaiRepDblons
REP=/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt
-----------------------------------------------------Début de Info4 :
la variable $1 est actuellement : Racine/Rep2.3DossierNormalNomRep Racine/Rep2.3DossierNormal--- Nbre Chps :2---Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt
RepsSourceVariable :Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt NbRepDbl : 1
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt NbRepDbl : 1
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :2---Racine § F2.CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine § F2.CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss EspaceNomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :2---Racine § F2BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine § F2BBID1_1 espaceApresJpg.jpg NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss EspaceNomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :2---Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 4
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :2---Racine § F2_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine § F2_F07 Fichier avec espaces.mp3 NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3 NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss EspaceNomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3 NbRepDbl : 3
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3 NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons NomRep Racine/Rep2.2 Espace Doublons --- Nbre Chps :2---Racine/Rep2.2 Espace Doublons § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § FichierTxt3.txt NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss EspaceNomRep Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace--- Nbre Chps :2---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2.3DossierNormalNomRep Racine/Rep2.3DossierNormal--- Nbre Chps :2---Racine/Rep2.3DossierNormal § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.3DossierNormal § FichierTxt3.txt NbRepDbl : 2
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :2---Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt NbRepDbl : 5
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$
Essai non concluant
code :
#!/bin/bash
echo " ---------------------$0------------------------ INFO 4-Find appostrophe doublés- -F=[' § '] ------"
REP="/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt"
RepSource="/home/phil/Documents/JeCodeShell/ShellEssaiRepDblons"
# --------------------------------------------- INFO 4 bis ---------------------------------------------------------
echo '$RepSource='"$RepSource"
echo 'REP='"$REP"
awk -F[' § '] -v RepSource==\$RepSource 'BEGIN { print "-----------------------------------------------------Début de Info4 : "; }
{
if (/^\s*§+/) { next }
else
printf ("la variable $1 est actuellement : ") $1;
{ NomRep[$1]=$1; NbRepDbl[$1]+=1; printf ("NomRep " NomRep[$1] "--- Nbre Chps :" NF "---" $0" \n");
"find \""NomRep[$1]"\" -maxdepth 1 ! -name \".*\" -type f | wc -l" | getline NbDblonRep[$1]};
print("RepsSourceVariable :"$RepSource, "NbRepDbl : " NbRepDbl[$1]);
}
END {
for ( Dblon in NbRepDbl) {
if (NbDblonRep[Dblon]/NbRepDbl[Dblon]==1)
{ #print($RepSource);
printf ("Ci-après la liste des noms des répertoires sélectionnés comme supprimables automatiquement, création du fichier SupprimerCPCent.txt Lancement édition ")> "SupprimerCPCent.txt";
printf ("ASupprimer : \n" )>> "SupprimerCPCent.txt";
printf("Repertoire doublon : %15s ===> %3d doublons sur %3s \n" , NomRep[Dblon] , NbRepDbl[Dblon] , NbDblonRep[Dblon] )>> "SupprimerCPCent.txt";
}
}
}' "$REP"
Resultat non concluant (Qui me surprend puisque ESPACE§ESPACE est ma sequence de caracteres separant mes champs)
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ ./Info4Bis.awk
---------------------./Info4Bis.awk------------------------ INFO 4-Find appostrophe doublés- -F=[' § '] ------
$RepSource=/home/phil/Documents/JeCodeShell/ShellEssaiRepDblons
REP=/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt
-----------------------------------------------------Début de Info4 :
la variable $1 est actuellement : Racine/Rep2.3DossierNormalNomRep Racine/Rep2.3DossierNormal--- Nbre Chps :4---Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt
RepsSourceVariable :Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt NbRepDbl : 1
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :4---Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt NbRepDbl : 1
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :5---Racine § F2.CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine § F2.CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :9---Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef
find: ‘Racine/Rep2.2’: Aucun fichier ou dossier de ce type
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :11---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :6---Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :6---Racine § F2BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine § F2BBID1_1 espaceApresJpg.jpg NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :8---Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :11---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 4
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :6---Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :7---Racine § F2_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine § F2_F07 Fichier avec espaces.mp3 NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :10---Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3 NbRepDbl : 5
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :12---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3 NbRepDbl : 6
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :7---Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3 NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :7---Racine/Rep2.2 Espace Doublons § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § FichierTxt3.txt NbRepDbl : 7
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :9---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt NbRepDbl : 8
la variable $1 est actuellement : Racine/Rep2.3DossierNormalNomRep Racine/Rep2.3DossierNormal--- Nbre Chps :4---Racine/Rep2.3DossierNormal § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.3DossierNormal § FichierTxt3.txt NbRepDbl : 2
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :4---Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt NbRepDbl : 5
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$
Code 3 non concluant
#!/bin/bash
echo " ---------------------$0------------------------ INFO 4-Find appostrophe doublés- -F='[ § ]' ------"
REP="/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt"
RepSource="/home/phil/Documents/JeCodeShell/ShellEssaiRepDblons"
# --------------------------------------------- INFO 4 TRI ---------------------------------------------------------
echo '$RepSource='"$RepSource"
echo 'REP='"$REP"
awk -F'[ § ]' -v RepSource==\$RepSource 'BEGIN { print "-----------------------------------------------------Début de Info4 : "; }
{
if (/^\s*§+/) { next }
else
printf ("la variable $1 est actuellement : ") $1;
{ NomRep[$1]=$1; NbRepDbl[$1]+=1; printf ("NomRep " NomRep[$1] "--- Nbre Chps :" NF "---" $0" \n");
"find \""NomRep[$1]"\" -maxdepth 1 ! -name \".*\" -type f | wc -l" | getline NbDblonRep[$1]};
print("RepsSourceVariable :"$RepSource, "NbRepDbl : " NbRepDbl[$1]);
}
END {
for ( Dblon in NbRepDbl) {
if (NbDblonRep[Dblon]/NbRepDbl[Dblon]==1)
{ #print($RepSource);
printf ("Ci-après la liste des noms des répertoires sélectionnés comme supprimables automatiquement, création du fichier SupprimerCPCent.txt Lancement édition ")> "SupprimerCPCent.txt";
printf ("ASupprimer : \n" )>> "SupprimerCPCent.txt";
printf("Repertoire doublon : %15s ===> %3d doublons sur %3s \n" , NomRep[Dblon] , NbRepDbl[Dblon] , NbDblonRep[Dblon] )>> "SupprimerCPCent.txt";
}
}
}' "$REP"
Resultat 3 non concluant (qui me semblait logiquement non concluant)
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ ./Info4Tri.awk
---------------------./Info4Tri.awk------------------------ INFO 4-Find appostrophe doublés- -F='[ § ]' ------
$RepSource=/home/phil/Documents/JeCodeShell/ShellEssaiRepDblons
REP=/home/phil/ToutesSauvegardes/JournalSavTestSauvegarde/ActionDoublons.txt
-----------------------------------------------------Début de Info4 :
la variable $1 est actuellement : Racine/Rep2.3DossierNormalNomRep Racine/Rep2.3DossierNormal--- Nbre Chps :4---Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt
RepsSourceVariable :Racine/Rep2.3DossierNormal § F2.3FichTexte1.txt NbRepDbl : 1
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :4---Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2_FichTexte1.txt NbRepDbl : 1
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :5---Racine § F2.CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine § F2.CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :9---Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef
find: ‘Racine/Rep2.2’: Aucun fichier ou dossier de ce type
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :11---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2foisDblons § F2.X2.2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 1
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/Rep2foisDblons § FOrig2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :6---Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOrig2.1 CpBBID2_EspaceApresNef.nef NbRepDbl : 2
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :6---Racine § F2BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine § F2BBID1_1 espaceApresJpg.jpg NbRepDbl : 2
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :8---Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2BID1_1espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :11---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2foisDblons § F2.1X2_BBID1_1 espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2foisDblonsNomRep Racine/Rep2foisDblons--- Nbre Chps :6---Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/Rep2foisDblons § FOri2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 4
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :6---Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2.1BBID1_1 espaceApresJpg.jpg NbRepDbl : 3
la variable $1 est actuellement : RacineNomRep Racine--- Nbre Chps :7---Racine § F2_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine § F2_F07 Fichier avec espaces.mp3 NbRepDbl : 3
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :10---Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § F2.2_F07 Fichier avec espaces.mp3 NbRepDbl : 5
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :12---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § F2.2.2.1_F07 Fichier avec espaces.mp3 NbRepDbl : 6
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :7---Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2.1_F07 Fichier avec espaces.mp3 NbRepDbl : 4
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :7---Racine/Rep2.2 Espace Doublons § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.2 Espace Doublons § FichierTxt3.txt NbRepDbl : 7
la variable $1 est actuellement : Racine/Rep2.2NomRep Racine/Rep2.2--- Nbre Chps :9---Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.2 Espace Doublons /Rep2.2.2.1 Doss Espace § FichierTxt3.txt NbRepDbl : 8
la variable $1 est actuellement : Racine/Rep2.3DossierNormalNomRep Racine/Rep2.3DossierNormal--- Nbre Chps :4---Racine/Rep2.3DossierNormal § FichierTxt3.txt
RepsSourceVariable :Racine/Rep2.3DossierNormal § FichierTxt3.txt NbRepDbl : 2
la variable $1 est actuellement : Racine/REPORIAvecFichierPbNomRep Racine/REPORIAvecFichierPb--- Nbre Chps :4---Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt
RepsSourceVariable :Racine/REPORIAvecFichierPb § FOri2_FichierTxt3.txt NbRepDbl : 5
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$
Merci bien
Dernière modification par philoeil (Le 30/04/2020, à 16:20)
Hors ligne
#6 Le 30/04/2020, à 20:49
- kamaris
Re : [RESOLU] AWK usage separateur de champs mal maitrisé
Tu devrais prendre des exemples élémentaires pour tester ta compréhension des expressions régulières.
Par exemple, ici :
$ echo a b § c§d | awk -F' § ' '{for (i=1;i<=NF;i++) print "champ " i " : \"" $i "\""}'
champ 1 : "a b"
champ 2 : "c§d"
$ echo a b § c§d | awk -F'[ § ]' '{for (i=1;i<=NF;i++) print "champ " i " : \"" $i "\""}'
champ 1 : "a"
champ 2 : "b"
champ 3 : ""
champ 4 : ""
champ 5 : "c"
champ 6 : "d"
$
Tu peux aussi activer le traçage des commandes par set -x, afin de voir ce qui est effectivement exécuté, après interprétation par le shell :
$ set -x
$ echo a b § c§d | awk -F'[ § ]' '{for (i=1;i<=NF;i++) print "champ " i " : \"" $i "\""}' >/dev/null
+ echo a b § c§d
+ awk '-F[ § ]' '{for (i=1;i<=NF;i++) print "champ " i " : \"" $i "\""}'
$ echo a b § c§d | awk -F[' § '] '{for (i=1;i<=NF;i++) print "champ " i " : \"" $i "\""}' >/dev/null
+ echo a b § c§d
+ awk '-F[ § ]' '{for (i=1;i<=NF;i++) print "champ " i " : \"" $i "\""}'
$
On voit que -F'[ § ]' et -F[' § '] conduisent bien à la même commande.
--
PS : une prochaine fois, si l'édition de ton message contient une nouvelle question, postes-en un nouveau, car sinon il n'y a pas de notification (il se trouve que je repassais par là, mais sinon, je n'aurais pas vu ta nouvelle question).
Hors ligne
#7 Le 30/04/2020, à 21:57
- philoeil
Re : [RESOLU] AWK usage separateur de champs mal maitrisé
Bonjour,
Demonstration parfaite, je pense avoir mieux compris cette fois.
Merci
Hors ligne