[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: FT: maiuscole/minuscole sed e awk



On Thu, Aug 29, 2002 at 10:02:38AM -0700, alberto wrote:
> possibile che in uno script sed, per cercare una parola (THEN) 
> indipendentemente dal tipo maiuscolo/miniscolo debba fare cosi'? 
> 
> /[Tt][Hh][Ee][Nn]/s/PIPPO/PLUTO/
Ne` sed ne` awk (ne` nawk) hanno la funzione case-insensitive-match.
gawk puo` fare match case-insensitive, basta settare a un valore non
nullo la variabile IGNORECASE.

Se non [pv]uoi usare gawk, puoi dichiarare nel tuo script awk questa
funzione:

function imatch(string, regex)
{
        lstring=(tolower (string))
        lregex=(tolower (regex))
        return (match(lstring, lregex))
}

ed usara piu` o meno come la funzione match(), ma solo nella forma
imatch(stringa_in_cui_cercare, "regular_expression"), e *non* nella
forma imatch(stringa_in_cui_cercare, /regular_expression/).
(Perche'? Esercizio per il lettore!) ;-)

E quindi, se vuoi semplicemente tentare il match nella riga corrente:
imatch($0, "regular_expression"). Anzi, se vuoi sempre e solo tentare il
match nella riga corrente puoi semplificare la funzione:

function imatchcurrent(regex)
{
        lstring=(tolower ($0))
        lregex=(tolower (regex))
        return (match(lstring, lregex))
}

in questo modo la sintassi diventerebbe imatch("regular_expression")
semplicemente.

Quindi, { if (imatch($0, "regular_expression)) sub(eccetera...) } .

Ciao,
/dev/null



Reply to: