Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[bash]esercizio di manipolazione di stringhe[risolto]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Fri Nov 21, 2008 7:06 am    Post subject: [bash]esercizio di manipolazione di stringhe[risolto] Reply with quote

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:
Code:

pippo="plu t  o"

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
View user's profile Send private message
morellik
l33t
l33t


Joined: 03 Feb 2003
Posts: 629
Location: Firenze

PostPosted: Fri Nov 21, 2008 9:34 am    Post subject: Reply with quote

Code:

echo $pippo | tr -d ' '

echo $pippo| sed 's/ //g'

echo $pippo | awk '$0{OFS="";$NF=$NF;print}'

Back to top
View user's profile Send private message
morellik
l33t
l33t


Joined: 03 Feb 2003
Posts: 629
Location: Firenze

PostPosted: Fri Nov 21, 2008 9:40 am    Post subject: Reply with quote

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
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Fri Nov 21, 2008 8:27 pm    Post subject: Reply with quote

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
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Sat Nov 22, 2008 1:17 pm    Post subject: Reply with quote

Code:
pippo=${pippo// /}

_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Sat Nov 22, 2008 2:25 pm    Post subject: Reply with quote

makoomba wrote:
Code:
pippo=${pippo// /}

8O
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
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Sat Nov 22, 2008 2:39 pm    Post subject: Reply with quote

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
Code:
pippo=${pippo// }

_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2963
Location: Milano, Italy

PostPosted: Sat Nov 22, 2008 2:43 pm    Post subject: Reply with quote

cloc3 wrote:
non è contraddittorio? e secondo me anche incorerente.
Non direi :

Code:
# a="aass    dfd    f"
# echo ${a/ /}
aass dfd f
# echo ${a// /}
aassdfdf

_________________
Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! ;)
Back to top
View user's profile Send private message
cloc3
Advocate
Advocate


Joined: 13 Jan 2004
Posts: 4808
Location: http://www.gentoo-users.org/user/cloc3/

PostPosted: Sat Nov 22, 2008 2:53 pm    Post subject: Reply with quote

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:
Quote:

pippo=$pippo// /}

con la doppia barra, anche la mamma potrebbe essere ingiustamente storpiata.
_________________
vu vu vu
gentù
mi piaci tu
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum