Pagina 1 di 1

[bash] problema stringhe di testo [risolto]

Inviato: sab 16 ago 2008, 12:46
da sya54M
salve, ho bisogno di escludere l'ultimo carattere (o byte) da una stringa di variabile lunghezza, per esempio "ciao" diventerebbe "cia" oppure "pippo" diventerebbe "pipp".

sono impazzito col comando cut ma mi sembra che possa solo selezionare e non escludere caratteri, soluzioni?

grazie e ciao!

Re: problema stringhe di testo

Inviato: sab 16 ago 2008, 13:02
da cymon
sya54M ha scritto:salve, ho bisogno di escludere l'ultimo carattere (o byte) da una stringa di variabile lunghezza, per esempio "ciao" diventerebbe "cia" oppure "pippo" diventerebbe "pipp".

sono impazzito col comando cut ma mi sembra che possa solo selezionare e non escludere caratteri, soluzioni?

grazie e ciao!
Mmmmmh, in che linguaggio?
Con un colpettino di sed puoi fare:

Codice: Seleziona tutto

cymon@chrome:~$ echo ciao > prova
cymon@chrome:~$ sed s/.$// prova
cia

Re: problema stringhe di testo

Inviato: sab 16 ago 2008, 13:13
da FireEater
Già... in che linguaggio??
In c potresti mettere uno '\0' nell'ultimo carattere(strlen).

Ciao.

Re: problema stringhe di testo

Inviato: sab 16 ago 2008, 13:44
da sya54M
perdonatemi, mi era venuto in mente dopo che ho spento il pc che non ho scritto che sto parlando di bash

Re: problema stringhe di testo

Inviato: sab 16 ago 2008, 13:52
da sya54M
comunque, grazie mille cymon :D con sed funziona, però non ho capito come :oops: ,

Codice: Seleziona tutto

s/.$//
cosa significa? è angosciate fare una cosa senza sapere come la si è fatta #-o

Re: problema stringhe di testo

Inviato: sab 16 ago 2008, 13:59
da conraid
sya54M ha scritto:comunque, grazie mille cymon :D con sed funziona, però non ho capito come :oops: ,

Codice: Seleziona tutto

s/.$//
cosa significa? è angosciate fare una cosa senza sapere come la si è fatta #-o
in pratica dice a sed "sostituisci il carattere, qualunque sia, prima del fine riga con niente"

. = qualsiasi carattere
$ = fine riga (se gli passi una stringa è la fine stringa, per esempio "echo pippo | sed s/.$//")
s/// = comando sed di sosituzione

Re: [bash] problema stringhe di testo

Inviato: sab 16 ago 2008, 14:00
da sya54M
e se volessi aggiungere una lettera prestabilita a una stringa come posso fare?
per esempio voglio aggiungere la lettera M a qualunque stringa e "ciao" diventerebba "ciaoM"

scusate se pongo un altra domanda ma tanto il topic è abbastanza generico... :D

Re: [bash] problema stringhe di testo

Inviato: sab 16 ago 2008, 14:08
da sya54M
grazie conraid, ora è tutto chiaro, avevo letto ciò che restituisce "sed --help" ma l'utilissima opzione s/// non è riportata nell'help, avrei dovuto guardare nel man.

Re: [bash] problema stringhe di testo

Inviato: sab 16 ago 2008, 14:09
da conraid
sya54M ha scritto:e se volessi aggiungere una lettera prestabilita a una stringa come posso fare?
per esempio voglio aggiungere la lettera M a qualunque stringa e "ciao" diventerebba "ciaoM"
s/$/M/

Ma in questo caso se ti serve dentro uno script non so quanto convenga usare sed
a=pippo
b=${a}M

echo b # produce pippoM

tanto per fare un esempio

Re: [bash] problema stringhe di testo

Inviato: sab 16 ago 2008, 14:16
da sya54M
conraid ha scritto:s/$/M/
perfetto! grazie infinite
conraid ha scritto:Ma in questo caso se ti serve dentro uno script non so quanto convenga usare seda=pippob=${a}Mecho b # produce pippoMtanto per fare un esempio
no, non è uno script, sed è perfetto per quello che devo fare, lo concateno ad altri comandi con |, non lavora su file.

Re: [bash] problema stringhe di testo

Inviato: sab 16 ago 2008, 16:43
da cymon
sya54M ha scritto:grazie conraid, ora è tutto chiaro, avevo letto ciò che restituisce "sed --help" ma l'utilissima opzione s/// non è riportata nell'help, avrei dovuto guardare nel man.
In verità sed è un programma a sé, più che il man, se ti interesa l'argomento, è proprio meglio recuperare una guida. Come è sempre bene recuperarne una di awk.