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
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
Lo farei con SED, una cosa tipo
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:echo AAApippo | sed -n "/^AAA/p"
codice:for word in $(cat FILE); do echo $word | sed -n "/^AAA/p" done
eccomi di nuovo... non mi piace lasciare le cose a meta'.
nn.txt e' il tuo file che contiene le parole, separate da spazio o altro carattere di tabulazione.codice:#!/bin/bash for i in $(cat nn.txt); do FIRST=$(echo ${i:0:1}) echo $i | sed -n "/^\([$FIRST-$FIRTS]\)\{3\}/p" done
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
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!
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:
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'...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