[bash] problema stringhe di testo [risolto]

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
sya54M
Master
Master
Messaggi: 1665
Iscritto il: mer 6 giu 2007, 14:44
Nome Cognome: Andrea Peluso
Slackware: 64-current
Kernel: ultimo
Desktop: KDE
Località: (Salerno)
Contatta:

[bash] problema stringhe di testo [risolto]

Messaggio 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!
Ultima modifica di sya54M il sab 16 ago 2008, 14:17, modificato 2 volte in totale.

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: problema stringhe di testo

Messaggio 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

Avatar utente
FireEater
Linux 3.x
Linux 3.x
Messaggi: 508
Iscritto il: sab 5 feb 2005, 0:00
Nome Cognome: Giuseppe M.
Slackware: Current
Kernel: 2.6.32.7-smp
Desktop: kde 4.3.4
Località: Cagliari <---> Torino

Re: problema stringhe di testo

Messaggio da FireEater »

Già... in che linguaggio??
In c potresti mettere uno '\0' nell'ultimo carattere(strlen).

Ciao.

Avatar utente
sya54M
Master
Master
Messaggi: 1665
Iscritto il: mer 6 giu 2007, 14:44
Nome Cognome: Andrea Peluso
Slackware: 64-current
Kernel: ultimo
Desktop: KDE
Località: (Salerno)
Contatta:

Re: problema stringhe di testo

Messaggio da sya54M »

perdonatemi, mi era venuto in mente dopo che ho spento il pc che non ho scritto che sto parlando di bash

Avatar utente
sya54M
Master
Master
Messaggi: 1665
Iscritto il: mer 6 giu 2007, 14:44
Nome Cognome: Andrea Peluso
Slackware: 64-current
Kernel: ultimo
Desktop: KDE
Località: (Salerno)
Contatta:

Re: problema stringhe di testo

Messaggio 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

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: problema stringhe di testo

Messaggio 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

Avatar utente
sya54M
Master
Master
Messaggi: 1665
Iscritto il: mer 6 giu 2007, 14:44
Nome Cognome: Andrea Peluso
Slackware: 64-current
Kernel: ultimo
Desktop: KDE
Località: (Salerno)
Contatta:

Re: [bash] problema stringhe di testo

Messaggio 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

Avatar utente
sya54M
Master
Master
Messaggi: 1665
Iscritto il: mer 6 giu 2007, 14:44
Nome Cognome: Andrea Peluso
Slackware: 64-current
Kernel: ultimo
Desktop: KDE
Località: (Salerno)
Contatta:

Re: [bash] problema stringhe di testo

Messaggio 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.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: [bash] problema stringhe di testo

Messaggio 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

Avatar utente
sya54M
Master
Master
Messaggi: 1665
Iscritto il: mer 6 giu 2007, 14:44
Nome Cognome: Andrea Peluso
Slackware: 64-current
Kernel: ultimo
Desktop: KDE
Località: (Salerno)
Contatta:

Re: [bash] problema stringhe di testo

Messaggio 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.

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: [bash] problema stringhe di testo

Messaggio 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.

Rispondi