IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Extraire le vocabulaire d'un roman : sed ou awk?


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 398
    Points : 193
    Points
    193
    Par défaut Extraire le vocabulaire d'un roman : sed ou awk?
    Bonjour

    J'ai un fichier roman.txt

    Je voudrais créer un lexique à partir du vocabulaire utilisé dans le roman (lexique.txt).

    Il faut donc:
    1) extraire chaque mot du roman,
    2) garder une seule fois un mot qui serait réutilisé plusieurs fois dans le roman,
    3) en faire une liste plaçant les mots les uns au-dessus des autres,
    4) dans l'ordre alphabétique dans un fichier "lexique.txt"

    Qu'est-ce qu'il est préférable d'utiliser: awk, ou sed? Le fichier est très volumineux.

    Je remplacerais déjà chaque espace par un saut de ligne. Pas trop compliqué avec les deux commandes.
    Ensuite, je chercherais et supprimerais les doublons. Là je ne sais pas trop comment.
    Enfin je mettrais dans l'ordre alphabétique. Et là plus du tout...

    Je vous remercie.
    Celano

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour,

    sort est l'outil pour trier. L'option -u pour supprimer les doublons.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    $ sed 's/ /\n/g' txt|sort -u
     
    1)
    2)
    3)
    4)
    à
    alphabétique
    alphabétique.
    au-dessus
    autres,
    avec
    awk,
    Bonjour
    Celano
    chaque
    chercherais
    commandes.
    comment.
    compliqué
    créer
    dans
    de
    déjà
    des
    deux
    donc:
    doublons.
    du
    d'utiliser:
    en
    Enfin
    Ensuite,
    espace
    est
    et
    Et
    extraire
    faire
    faut
    fichier
    fois
    garder
    Il
    J'ai
    je
    Je
    là
    Là
    le
    Le
    les
    lexique
    "lexique.txt"
    (lexique.txt).
    ligne.
    liste
    l'ordre
    mettrais
    mot
    mots
    ne
    ou
    par
    partir
    pas
    Pas
    plaçant
    plus
    plusieurs
    préférable
    Qu'est-ce
    qui
    qu'il
    remercie.
    remplacerais
    réutilisé
    roman
    roman,
    roman.txt
    sais
    saut
    sed?
    serait
    seule
    supprimerais
    tout...
    très
    trop
    un
    une
    uns
    utilisé
    vocabulaire
    volumineux.
    voudrais
    vous
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Personnellement, je ferais:
    En particulier, je regarderais les options -w, -o et -i de grep, associées à du '[:alpha:]+' par exemple.
    Et je regarderais aussi l'option -u de sort.

    Attention toutefois à la gestion des majuscules et minuscules, et aux caractères non-ascii (caractères accentués et autres, notamment le tiret, qui peut faire partie de nombreux mots et l'apostrophe qui peut faire partie de certains noms (les noms propres notamment)) et à leur encodage (utf8, iso8859-1, cp1252?)!

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 398
    Points : 193
    Points
    193
    Par défaut
    Vous n'imaginez pas tout ce que linux peut faire pour vous...

    Je suis encore tout ébahi. Merci pour les conseils. Maintenant je vais décortiquer les manuels à partir de ces indiations.

    Celano

    PS: encore merci!

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    "Alphabétique" est présente deux fois à cause du point. On peut faire plus intelligent: considérer comme séparateur tout ce qui n'est pas alphanumérique ou tiret.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    $ sed 's/[^a-zA-Z0-9-]/\n/g' txt|sort -u
     
    1
    2
    3
    4
    à
    ai
    alphabétique
    au-dessus
    autres
    avec
    awk
    Bonjour
    Celano
    chaque
    chercherais
    commandes
    comment
    compliqué
    créer
    d
    dans
    de
    déjà
    des
    deux
    donc
    doublons
    du
    en
    Enfin
    Ensuite
    espace
    est
    est-ce
    et
    Et
    extraire
    faire
    faut
    fichier
    fois
    garder
    il
    Il
    J
    je
    Je
    l
    là
    Là
    le
    Le
    les
    lexique
    ligne
    liste
    mettrais
    mot
    mots
    ne
    ordre
    ou
    par
    partir
    pas
    Pas
    plaçant
    plus
    plusieurs
    préférable
    qu
    Qu
    qui
    remercie
    remplacerais
    réutilisé
    roman
    sais
    saut
    sed
    serait
    seule
    supprimerais
    tout
    très
    trop
    txt
    un
    une
    uns
    utilisé
    utiliser
    vocabulaire
    volumineux
    voudrais
    vous
    Notez la présence de "au-dessus".
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,

    Comme précisée par jack-ft, attention à la locale, exemples:

    Bon tri:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo -e "trét\ntreu\ntres\ntrop" | LC_COLLATE=fr_FR.utf8 sort
    tres
    trét
    treu
    trop
    Mauvais tri:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo -e "trét\ntreu\ntres\ntrop" | LC_COLLATE=C sort
    tres
    treu
    trop
    trét
    Cordialement.

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    [...] notamment le tiret, qui peut faire partie de nombreux mots et l'apostrophe qui peut faire partie de certains noms (les noms propres notamment) [...]
    Pas que dans les noms propres, et quand les deux sont combinés, je vous raconte pas : tout s'en va à vau-l'eau !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. script shell : probleme avec sed et awk
    Par salseropom dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 05/06/2007, 11h57
  2. Script avec sed et awk
    Par arezki76 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 04/01/2007, 14h56
  3. Aide sur les commandes sed et awk
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 20/06/2006, 08h22
  4. sed et awk sous windows/dos
    Par Jean-Matt dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 05/01/2006, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo