View previous topic :: View next topic |
Author |
Message |
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4808 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Fri Nov 21, 2008 7:06 am Post subject: [bash]esercizio di manipolazione di stringhe[risolto] |
|
|
c'è un passaggio di man bash che non riesco ad usare come desidero:
man bash wrote: |
${parameter/pattern/string}
The pattern is expanded to produce a pattern just as in pathname expansion. Parameter is expanded and the longest match of
pattern against its value is replaced with string. If Ipattern begins with /, all matches of pattern are replaced with
string. Normally only the first match is replaced. If pattern begins with #, it must match at the beginning of the
expanded value of parameter. If pattern begins with %, it must match at the end of the expanded value of parameter. If
string is null, matches of pattern are deleted and the / following pattern may be omitted. If parameter is @ or *, the sub‐
stitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter
is an array variable subscripted with @ or *, the substitution operation is applied to each member of the array in turn, and
the expansion is the resultant list.
|
ora, se ho una stringa del tipo:
qual è il modo efficace di eliminare tutti i 3 spazi in eccesso? _________________ vu vu vu
gentù
mi piaci tu
Last edited by cloc3 on Sat Nov 22, 2008 2:53 pm; edited 1 time in total |
|
Back to top |
|
|
morellik l33t
Joined: 03 Feb 2003 Posts: 629 Location: Firenze
|
Posted: Fri Nov 21, 2008 9:34 am Post subject: |
|
|
Code: |
echo $pippo | tr -d ' '
echo $pippo| sed 's/ //g'
echo $pippo | awk '$0{OFS="";$NF=$NF;print}'
|
|
|
Back to top |
|
|
morellik l33t
Joined: 03 Feb 2003 Posts: 629 Location: Firenze
|
Posted: Fri Nov 21, 2008 9:40 am Post subject: |
|
|
Io uso la caratteristica di expansion per rinominare o copiare file con nomi molto lunghi.
Code: |
mv fileconomemoltolungo{,.html}
|
In questo caso si rinomina fileconomemoltolungo aggiungendo l'estensione .html. |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4808 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Fri Nov 21, 2008 8:27 pm Post subject: |
|
|
morellik wrote: | Code: |
echo $pippo | tr -d ' '
...
|
|
ok., ok. ma così non vale.
io volevo fare tutto con bash.
mi sembra davvero strano che esista uno strumento di sostituzione di stringhe incapace di fare iterazioni, e ritenevo di essere io a non capire la sintassi. sempre dal testo del man, sembrerebbe che un uso saggio del carattere * possa risolvere, ma non ho ancora capito come. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Nov 22, 2008 1:17 pm Post subject: |
|
|
_________________ When all else fails, read the instructions. |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4808 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Sat Nov 22, 2008 2:25 pm Post subject: |
|
|
Code: |
s939 data # echo ${pippo// /}
pluto.
|
hai ragione. ma è pazzesco. qui proprio non ci capiamo con l'italiano.
sarà per questo che scrivono i man in inglese. dalla lettura del testo avrei supposto il contrario:
man bash wrote: |
${parameter/pattern/string}
...
If string is null, matches of pattern are deleted and the / following pattern may be omitted.
|
non è contraddittorio? e secondo me anche incorerente.
in questo esempio, fortunatamente, è più rispettoso:
Code: |
s939 data # pippo="mamma"
s939 data # echo ${pippo/c/m}
mamma
s939 data # echo ${pippo/c/m/}
mamma
|
_________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
makoomba Bodhisattva
Joined: 03 Jun 2004 Posts: 1856
|
Posted: Sat Nov 22, 2008 2:39 pm Post subject: |
|
|
cloc3 wrote: | non è contraddittorio? e secondo me anche incorerente. |
no, è solo che ti sei perso un pezzo:
man bash wrote: | If pattern begins with /, all matches of pattern are replaced with string. |
la parte che hai quotato tu, riportata a pippo, produce
_________________ When all else fails, read the instructions. |
|
Back to top |
|
|
.:deadhead:. Advocate
Joined: 25 Nov 2003 Posts: 2963 Location: Milano, Italy
|
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4808 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Sat Nov 22, 2008 2:53 pm Post subject: |
|
|
makoomba wrote: |
no, è solo che ti sei perso un pezzo:
|
adesso ho capito.
in pratica, nel tuo comando, il pattern è quello in rosso, mentre io pensavo che fosse la stringa vuota:
con la doppia barra, anche la mamma potrebbe essere ingiustamente storpiata. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
|