View Full Version : [Bash scripting] Trasformare spazi multipli in uno solo
Ciao a tutti,
domanda molto semplice: come faccio a trasformare spazi multipli in uno solo, con lo scripting Bash di UNIX??
Esempio:
Utente@laptop: ls -l
-rwxr-xr-x 1 Utente Utente 4548 Feb 7 19:30 signal.c
-rw-r--r-- 1 Utente Utente 10635 Feb 11 20:19 signal.exe
Come vedete, ovviamente la console mi indenta l'output per fare in modo di vederlo indentato bene, ovvero aggiunge spazi per indentarlo...
Se io volessi fare però una cosa del genere
Utente@laptop: ls -l | cut -f 5
Questa roba "dovrebbe" stamparmi il 5° field della ls -l
Non lo fa, ovviamente, perchè i dati non sono separati da TAB bensì da spazi, e in alcuni casi da spazi multipli!
Ovviamente non funziona nemmeno mettendo come delimiter ( -d ) lo spazio:
Utente@laptop: ls -l | cut -f 5 -d " "
Quindi, domanda finale: come faccio a trasformare gli spazi multipli in uno solo? Senza usare sed, solo con scripting bash normale. C'è qualche comando?
^TiGeRShArK^
09-02-2008, 12:00
non sono così masochista da farlo in bash :p
cmq potresti fare così:
#!/usr/bin/python
import sys
sentence = ''
for word in sys.argv[1].split(' '):
if (len(word) > 0):
sentence += word + ' '
print sentence
ed usarlo in questo modo (se lo metti in un file chiamato removeSpaces.py):
./removeSpaces.py "write whatever you want with spaces."
e il risultato ti viene restituito sulla stdout :p
ecco l'output :p
write whatever you want with spaces.
non sono così masochista da farlo in bash :p
cmq potresti fare così:
#!/usr/bin/python
import sys
sentence = ''
for word in sys.argv[1].split(' '):
if (len(word) > 0):
sentence += word + ' '
print sentence
ed usarlo in questo modo (se lo metti in un file chiamato removeSpaces.py):
./removeSpaces.py "write whatever you want with spaces."
e il risultato ti viene restituito sulla stdout :p
ecco l'output :p
write whatever you want with spaces.
ihihihih tiger sarebbe bello se potessi farlo con python ...
.split() :sbav: (sogno, nel bash...)
Il problema è che devo proprio farlo con bash scripting, niente python... infatti guarda secondo me i professori sono scemi a far usare robe "inutili", capisco che bash è potentissimo e ci puoi fare quello che vuoi, ma secondo me è da malati mentali dover imparare una cosa che tanto non si usa, molto meglio scriptare con python che è più veloce e più semplice...
Poi oh, ci sono filosofie e filosofie...ma io bash lo trovo una mazzata sui cosiddetti...
TROVATO! TROVATO!
Sbaglio sempre a cercare su Google le cose in inglese, basta scrivere in italiano :D
Dopo circa 1000 ricerche, comunque, eccolo...
tr -s " "
Sì ma che sbattone! Sto bash lo odio :muro:
^TiGeRShArK^
09-02-2008, 12:16
ihihihih tiger sarebbe bello se potessi farlo con python ...
.split() :sbav: (sogno, nel bash...)
Il problema è che devo proprio farlo con bash scripting, niente python... infatti guarda secondo me i professori sono scemi a far usare robe "inutili", capisco che bash è potentissimo e ci puoi fare quello che vuoi, ma secondo me è da malati mentali dover imparare una cosa che tanto non si usa, molto meglio scriptare con python che è più veloce e più semplice...
Poi oh, ci sono filosofie e filosofie...ma io bash lo trovo una mazzata sui cosiddetti...
ah ok .. pensavo ti servisse per lavoro :D
in quel caso avresti potuto usare lo strumento + appropriato, infatti qualche mio amico sistemista ormai ha totalmente abbandonato (per fortuna direi) il bash scripting e il perl in favore del python :p
ah ok .. pensavo ti servisse per lavoro :D
in quel caso avresti potuto usare lo strumento + appropriato, infatti qualche mio amico sistemista ormai ha totalmente abbandonato (per fortuna direi) il bash scripting e il perl in favore del python :p
dipende dalle attività che fai, ma su qualsiasi macchina anche la più leggera bashe perl li trovi pyton no.
dal mio punto di vista apprezzo il potere usare lo stesso strumento ovunque :O
giusto per la cronaca in perl:
ls -l | perl -npe 's/ +/ /g'
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.