Originariamente inviato da UNIX-based
ciao,
scusami ancora ma non ho capito bene un (altro) paio di cose.
Purtroppo adesso sono di fretta e posso rispondere solo a poco, sperando di non inserire troppe boiate nel mezzo

con:
codice:
grep -E "^[ \t]*SYNCH_ATTEMPTS[ \t]*=" eciadsl.conf | tail -1 | cut -f 2 -d '=' | tr -d " \t"
oppure
codice:
grep SYNCH_ATTEMPTS eciadsl.conf | cut -d= -f2
non ottengo la stessa cosa?
No. La prima versione cerca una riga che
- inizi con un qualsiasi numero di spazi o tab e
- contenga la stringa "SYNCH_ATTEMPTS" e
- contenga, dopo la suddetta, un qualsiasi numero di spazi o tab e
- contenga, dopo i suddetti, un segno di uguale.
La seconda versione cerca semplicemente una riga contenente SYNCH_ATTEMPTS.

Cosi`, si ha che
codice:
abbaSYNCH_ATTEMPTScabbayabba
soddisfa la seconda regexp ma non (correttamente) la prima.

perchè tutta questa preoccupazione per i tab (il motivo delle "extended regular expression" no?)

ma come viene identificato il tab:
codice:
"[ \t]"
" \t"
"\t"
?
con \t. "[ ]" nel contesto delle regexp e` un'altro operatore. Nel caso specifico("[ \t]*") si hanno i seguenti elementi basilari:
' ' (spazio)
\t (tab)
[ ]
*