Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201

    [awk]confrontare caratteri dentro una parola

    Come faccio a riconoscere le parole contenute in un file che iniziano, per esempio, con tre lettere uguali, usando un script awk?

    Faccio un esempio:
    INPUT: aaalto basso FFForte eccetera
    OUTPUT: aaalto FFForte

    Ringrazio in anticipo

  2. #2
    Lo farei con SED, una cosa tipo

    codice:
    echo AAApippo | sed -n "/^AAA/p"
    va pero' elaborata un'espressione regolare. Conta anche che devi analizzare parola per parola... un cat FILE | sed ... non basta, devi fare una cosa tipo:

    codice:
    for word in $(cat FILE); do
             echo $word | sed -n "/^AAA/p"
    done
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  3. #3
    eccomi di nuovo... non mi piace lasciare le cose a meta'.

    codice:
    #!/bin/bash
    
    for i in $(cat nn.txt); do
          FIRST=$(echo ${i:0:1})
          echo $i | sed -n "/^\([$FIRST-$FIRTS]\)\{3\}/p"
    done
    nn.txt e' il tuo file che contiene le parole, separate da spazio o altro carattere di tabulazione.

    FIRST si occupa di recuperare la prima lettera di ogni parola

    sed parsa le parole, se la prima lettera/numero e' ripetuta 3 volte stampa il risultato
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  4. #4
    Utente di HTML.it L'avatar di ibykos
    Registrato dal
    Feb 2005
    Messaggi
    201
    Gentilissimo Mutato, ho sostenuto l'esame di sistemi operativi, che comprende 2 script bash, 1 awk (quello in questione) e 3 domande di teoria nel tempo utile di un'ora.
    Il compito era a mio avviso assultamente insormontabile, e, a maggior, riprova, intendo dimostrare che è impossibile elaborare uno script awk che risponda alla richiesta:

    "realizzare uno script awk (non puoi quindi servirti di sed o bash o grep o altro) che stampi tutte le parole contenute in un file che iniziano con tre lettere uguali e che compaiano nel testo almeno due volte"

    Siamo circa 400 candidati a superare l'esame e, secondo me, rischia di non passare nessuno.
    Per questo chiedo a tutti i volenterosi di risolvere questa richiesta in un tempo massimo di 20 minuti, e in entrambi i casi (successo o fallimento) di scrivere cosa ne pensate.

    Grazie!

  5. #5
    Non conosco AWK fino in fondo, ma so che e' molto potente e probabilmente qualche guru riuscirebbe a risolvere l'esercizio. Quel tipo di problema va proprio in questa direzione, vengono posti quesiti per spingere al limite un sf e quindi farlo conoscere bene.

    Ad esempio, modificando lo script postato prima:

    codice:
    #!/bin/bash
    
    WORDSLIST=$(cat words.txt | tr " " "\n" | sort | uniq -c | awk '($1 > 1) {print $2}')
    for i in $WORDSLIST; do
          FIRST=$(echo ${i:0:1})
          echo $i | sed -n "/^\([$FIRST-$FIRTS]\)\{3\}/p"
    done
    si puo' rispondere anche alla parte "compaiano nel testo almeno due volte", pero' ho utilizzato cose che gia' sapevo senza imparare nulla di nuovo. Se devi farlo per lavoro questo e' il modo migliore, ma se sei all'universita'...

    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.