FAQ Undows 2.1
FAQ Undows




Nous vous conseillons très vivement de lire Awk_For_Lex qui vous donnera d'autres exemples et ira plus en profondeur sur certains concepts.

Quelles sont les astuces à connaître ?

  1. Vous pouvez copier les exemples et les coller dans votre terminal en cliquant sur l'icône "coller" de votre boîte dos
  2. Nous vous conseillons aussi la technique suivante: Ouvrez Resultats.txt (cf ci-dessus point C.). Puis tapez votre ligne de commande. Appuyez sur Entrée et retourner voir votre fichier Resultats.txt. Vous y voyez maintenant vos nouveaux résultats.
  3. La méthode du click droit "shell to unix" permet d'ouvrir une "boite de commandes" dans n'importe quel dossier. (C'est vraiment très économique).

Comment quitter Undows ?

En tapant e[entrée] ou exit[entrée].

Quels sont les avantages d'utiliser bash et pas une boîte DOS classique ?

Les avantages sont innombrables. Le plus perceptible est surement celui de pouvoir ne pas devoir taper les noms de fichiers/dossier en entier. Par exemples dans le répertoire Bases+Scripts si vous tapez "less G" puis la touche "tab" bash complètera la ligne avec Graphemes.txt.
Un autre avantage considérable de bash réside dans le fait qu'il gardera votre historique de commandes après avoir éteint votre ordinateur (si vous avez quitté en tapant exit ou e).
D'autre part, votre ligne de commande n'aura pas de limite sous bash alors qu'elle est fortement limitée sous dos (128 caractères, je crois).
Enfin il est aussi possible de définir des raccourcis dans C:\Lexique\Apps\bin\.bashrc. alias e=exit signifie qu'en tapant e[entrée], vous tapez en fait exit[entrée]. Cela peut vous économiser beaucoup de frappe!!!!

Qu'est-ce qu'une ligne de commande awk ?

Une ligne de commande est une commande tapée dans une boîte dos. Les lignes de commandes sont très utiles car on peut les appliquer sur plusieurs fichiers à la suite et elles permettent de garder une trace des opérations que l'on a fait.

Pour executer ces requêtes vous devez executer les étapes A. B. et C. (cf. ci-dessus)
Rappel: Pour visualiser le résultat de ces exemples, vous devrez ouvrir le fichier Resultats.txt (qui est dans le dossier où se trouvent vos bases)

FS="\t" signifie que les colonnes de Graphemes sont délimitées par des tabulations
OFS="\t" signifie que nous voulons des tabulations pour séparer nos colonnes dans Resultats.txt

A quoi servent les scripts awk ?

Les scripts permettent de lancer des commandes plus complexes permettant par exemple de mettre en correspondance deux bases de données. Pour lancer votre script, celui-ci doit être dans le même dossier que vos base.
gawk -f exemple_script.awk Graphemes.txt
Nous avons placé un certain nombre d'exemples dans le dossier Bases+Scripts:

Qu'est-ce qu'une expression régulière ?

Une expression régulière permet d'effectuer des requêtes très puissantes. Elles sont toujours comprises entre / et /.

SymboleSignificationExempleRésultat
^Début de chaîne^aarbre, arbuste
$Fin de chaînee$tente, mare
.Tout caractère^a..e$arme, acte
[xyz]Les caractères x, y ou za[bc]raccroché, abruti
[x-z]La tranche de caractères de x à za[l-n]amener, alourdi, anneau
[^xyz]Tous les caractères sauf xyz[^aeiyouéèïê]Toutes les consonnes
*Désigne le caractère qui précède répété un nombre quelconque de fois, y compris zérom*emmener, amender, entasser
+Désigne le caractère qui précède répété au moins une foism+emmener, amender
?Désigne le caractère qui précède répété au plus une foism ?amender, entasser
|ou(buv|parl)antbuvant, parlant
{n}désigne le caractère qui précède exactement n foisnn{2}patronne mais pas patron

Autres exemples

Dans le champs Graph:

^.....$ -> Tous les mots de cinq lettres

^a -> Tous les mots commençant par a

e$ -> Tous les mots finissant par e

^a.*e$ -> Tous les mots commençant par a et finissant par e

arb -> Afficher tous les mots contenant arb

^a[fg] -> Tous les mots ayant comme première lettre a puis un f ou un g

[aeiouyàâçèéêôî][aeiouyàâçèéêôî][aeiouyàâçèéêôî] ou [aeiouyàâçèéêôî]{3}-> Tous les mots composés de trois voyelles qui se suivent

[^aeiouyàâçèéêôî][^aeiouyàâçèéêôî][^aeiouyàâçèéêôî][^aeiouyàâçèéêôî][^aeiouyàâçèéêôî] ou [^aeiouyàâçèéêôî]{5}-> Tous les mots composés de cinq consonnes qui se suivent

^[aeiouyàâçèéêôî] -> Tous les mots commençant par une voyelle

[^aeiouyàâçèéêôî]$ -> Tous les mots finissant par une consonne

^[^aeiouyàâçèéêôî]*[aeiouyàâçèéêôî][^aeiouyàâçèéêôî]*$ -> Les mots n'ayant qu'une seule voyelle

Quel type de requête peut-on faire avec les expressions régulières qu'on ne peut faire avec Access ?

Par exemple donnez tous les mots ne contenant qu'une voyelle et pas plus:
gawk ’BEGIN{OFS="\t";FS="\t";} $1 ~ /^[^aeiouyàâçèéêôî]*[aeiouyàâçèéêôî][^aeiouyàâçèéêôî]*$/’ Graphemes.txt >Resultats.txt Ca commence peut-être par une non-voyelle puis il y a une voyelle puis finit éventuellement une non-voyelle

Qu'est-ce que $1 dans les requêtes awk ?

$1 est le nom donné à la première colonne. Afin de savoir à quelle colonne correspond quel champs dans la table graphemes.txt, nous vous avons fait le tableau suivant:
MotPhonologieCat GramGenreNombreAleaFrantFreqParMFsFreqParMNbLettresNbPhonsLettreAbstrPhonAbstrPuOrthPuPhonPhonSyllNbSyllSyllAbstr
1234567891011121314151617

Que faut-il savoir absolument à propos d'awk ?

Il faut savoir qu'awk fait un certain nombre d'opérations automatiquement:
Awk lit votre fichier texte, sépare les champs selon le field separator (FS), puis vérifie si la ligne correspond au pattern donné et si c'est le cas applique une action. Une reqête awk s'exprime donc typiquement par /pattern/{action} où pattern est une expression régulière.
Awk permet aussi d'utiliser de nombreux raccourcis. Ainsi la commande gawk ’$1 ~ /^b/’ est équivalente à la commande ’if ($1 ~ /^b/) {print $0}’ . Cela permet d'économiser de la frappe.

Pourquoi enchaîner des commandes ?

L'enchaînement de commandes permet de pouvoir faire certaines choses qui ne sont pas possibles avec awk. Cela peut aussi permettre de faire très rapidement certaines opérations. Chaque commande est séparée par "|". Par exemple, faire un tri après avoir effectué une certaine recherche.
gawk ’BEGIN{OFS="\t";FS="\t";}$1 ~ /^b/{print $1,$8}’ Graphemes.txt | sort -n -k2 >Resultats.txt
Vous pouvez obtenir le même résultat en faisant:
cut -f1,8 | sort -n -k1 Graphemes.txt >Resultats.txt
Si vous voulez une liste de toutes les représentations phonologiques:
cut -f2 Graphemes.txt | uniq -d >Resultats.txt

Je désire apprendre à mieux maîtriser awk. Comment puis-je faire ?

D'autres exemples de recherches dans "Lexique" sont décrits dans le fichiers Utiliser Awk pour interroger Lexique Pour apprendre le langage Awk, vous pouvez lire gawk.pdf (accessible en ligne ici.) . Il existe aussi des livres qui le décrive (Le langage Awk et Sed et Awk). Finalement, le dossier "Doc" contient, entre autres, un résumé de toutes les commandes awk.
A noter également l'existence des livres sed & awk (très bon), Introduction à Perl (excellent) et Maitrise des expressions régulieres (on ne le connaît pas).

J'ai un problème. Qui contacter ?

En cas de problème, postez un message sur le forum de Lexique:
http://www.lexique.org/addons/phpbb2

Pourquoi utiliser les langages awk ou perl ?

Apprendre a se servir de awk et/ou de perl devient rapidement rentable car ça rempli 99% des taches de programmation utiles en psycholinguistique (creation de materiel/ analyse de données). (En une dizaine d'années, Christophe Pallier a "contaminé" avec awk les chercheurs et étudiants de son entourage, qui l'utilisent pratiquement tous).
Perl permet de faire plus de choses (tri des tableaux, backreferencing, expressions régulières non gloutonnes) et dispose d'un debugueur gratuit mais ces programmes sont un peu plus longs et il est beaucoup plus gros (6 Mo à installer)
Cependant nous avons inclu une mini version de perl avec Lexique afin de pouvoir executer des programmes perl ne nécessitant pas de librairies. De toutes façons, ces langages sont très similaires et si vous en maîtrisez un, vous maîtriserez l'autre sans peine.

C'est bizare: ma ligne de commande n'accepte pas certaines commandes MSDOS

Effectivement, l'interpréteur de commandes ("shell" en anglais) que Lexique installe est `BASH' (cf. bash). Les avantages de BASH par rapport à DOS sont nombreux, notamment: complétion automatique des noms de fichiers ou répertoires avec la touche TAB, ligne de commande de taille non limité à 80 caractère, gestions des single/double quote, permettant d'entrer des commandes awk en ligne de commande sans difficultés, taille du path non limitée... et compatibilité avec Linux et MacOS/X.

Pourquoi avoir choisi les logiciels GNU de djgpp (et pas ceux de Cygwin ou Gnuwin32 p.ex.)

En effet il faut savoir qu'il existe différentes versions des logiciels GNU. Nous avons préféré ceux de djgpp car ils sont deux à quatre fois plus rapides (car compilés pour MS-DOS)que les logiciels de Cygwin ou GnuWin32.

Autres Logiciels utiles

UltraEdit est un autre éditeur de texte plus pratique que SciTE (fourni avec Undows) pour les gros fichiers textes (comme les bases de Lexique par exemple)