fare modifiche in una stringa prima o dopo un certo carattere
fare modifiche in una stringa prima o dopo un certo carattere
Non riesco a trovare documentazione in rete su Sed per imparare a fare operazioni su una parte di stringa, ad es.
Avrei bisogno di imparare come operare prima o dopo la prima occorrenza di un carattere, ad es. un trattino
Il castello (del conte dracula) - la creatura (di frankestein)
diventa
(del conte dracula) Il castello - la creatura (di frankestein)
Vorrei proprio poter "isolare" la parte prima del trattino dal resto della stringa, oppure scegliere di isolare la parte dopo. Eventualmente poter scegliere come delimitatore al posto del trattino
un parantesi di apertura o di chiusura.
Perchè la parte della stringa prima del trattino può avere solo parole oppure parole con una sola parentesi finale mentre la parte dopo il trattino può avere di tutto...
Per il momento so solo sostituire prima o dopo un trattino con questo comando sed ' s/\<[^-]\{1,\}/&YAHOO!!!/2 ho messo questo comando perchè la cosa più avanzata che conosco!
Vorrei imparare da solo ma in rete non trovo un solo manuale su come manipolare le stringhe! Vado avanti solo con domande e risposte di stackoverflow e faccio una fatica mostruosa perchè trovo solo faccende come lavorare tra linee e file ma non nella semplice stringa!
Avrei bisogno di imparare come operare prima o dopo la prima occorrenza di un carattere, ad es. un trattino
Il castello (del conte dracula) - la creatura (di frankestein)
diventa
(del conte dracula) Il castello - la creatura (di frankestein)
Vorrei proprio poter "isolare" la parte prima del trattino dal resto della stringa, oppure scegliere di isolare la parte dopo. Eventualmente poter scegliere come delimitatore al posto del trattino
un parantesi di apertura o di chiusura.
Perchè la parte della stringa prima del trattino può avere solo parole oppure parole con una sola parentesi finale mentre la parte dopo il trattino può avere di tutto...
Per il momento so solo sostituire prima o dopo un trattino con questo comando sed ' s/\<[^-]\{1,\}/&YAHOO!!!/2 ho messo questo comando perchè la cosa più avanzata che conosco!
Vorrei imparare da solo ma in rete non trovo un solo manuale su come manipolare le stringhe! Vado avanti solo con domande e risposte di stackoverflow e faccio una fatica mostruosa perchè trovo solo faccende come lavorare tra linee e file ma non nella semplice stringa!
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
- DoctorStrange
- Imperturbabile Insigne
- Messaggi: 2855
- Iscrizione: mercoledì 14 ottobre 2015, 9:33
- Desktop: Gnome3
- Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
- Sesso: Maschile
- Località: Roma, Italia
Re: fare modifiche in una stringa prima o dopo un certo carattere
Se hai a disposizione dei dataset identificati da specifici pattern, io userei "AWK" piuttosto che sed. O meglio, con awk discrimini le due (o piu) parti della stringa, e poi applichi sed per fare trasformazioni atomiche sui frammenti estratti.
Puoi usare le opzioni specifiche di awk come FS (Field Separator) ed RS (Record Separator), per identificare i caratteri separatori, ed i caratteri che identificano la fine della stringa.
A quel punto con sed trasformi i vari frammenti come vuoi.
Puoi usare le opzioni specifiche di awk come FS (Field Separator) ed RS (Record Separator), per identificare i caratteri separatori, ed i caratteri che identificano la fine della stringa.
A quel punto con sed trasformi i vari frammenti come vuoi.
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: fare modifiche in una stringa prima o dopo un certo carattere
Codice: Seleziona tutto
vaevictis@vaevictis-N56VV:~$ echo "Il castello (del conte dracula) - la creatura (di frankestein)" | sed 's/\(.*\) \((.*)\) -\(.*\)/\2 \1 -\3/'
(del conte dracula) Il castello - la creatura (di frankestein)
In questo caso il comando sed è:
Codice: Seleziona tutto
sed 's/\(.*\) \((.*)\) -\(.*\)/\2 \1 -\3/'
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Re: fare modifiche in una stringa prima o dopo un certo carattere
Se le parentesi sono quadre come si possono escapare? Col normale \ non funziona
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: fare modifiche in una stringa prima o dopo un certo carattere
Funziona funziona
Codice: Seleziona tutto
vaevictis@vaevictis-N56VV:~$ echo "Il castello [del conte dracula] - la creatura (di frankestein)" | sed 's/\(.*\) \(\[.*\]\) -\(.*\)/\2 \1 -\3/'
[del conte dracula] Il castello - la creatura (di frankestein)
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Re: fare modifiche in una stringa prima o dopo un certo carattere
Funziona. Io mettevo la quadre fuori ...
Grazie!
PS: non riesco a trovare una risorsa in rete in cui si trovino tutte queste cose, se per caso ne conosci una sarebbe molto gradita
Grazie!
PS: non riesco a trovare una risorsa in rete in cui si trovino tutte queste cose, se per caso ne conosci una sarebbe molto gradita
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: fare modifiche in una stringa prima o dopo un certo carattere
Avevo immaginato.
Di nulla.
Come stai messo con l'Inglese? La documentazione è comunque in questa lingua.
In caso, io inizierei a vedere cosa propone il progetto GNU, quindi da questo Getting Help e dal manuale (che è la voce "online manual" del precedente link, nella versione HTML).
Nel Getting Help, per dire, trovi anche dei giochi scritti in sed.
Questa è in Italiano, anche se spiega poco.
Poi in generale darei un'occhiata (sono serio) alla manpage di BASH e alle operazioni di manipolazione di stringhe in BASH, che a volte ti evitano di utilizzare sed
Ultima modifica di vaeVictis il domenica 18 ottobre 2020, 1:22, modificato 1 volta in totale.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Re: fare modifiche in una stringa prima o dopo un certo carattere
Alcuni di quei link li conosco... devo dire che sono poco orientati al pratico, sono più sul teorico che serve per chi vuole lavorarci e giustamente deve capire i concetti di fondo ma per chi vuole sfruttarne le possibilità, come una qualsiasi risorsa che il computer mette a disposizione di chiunque per i propri hobbies, la fatica è tanta... con l'inglese me la cavo come con il transilvano, l'italiano è molto gradito...
ti ringrazio ancora Vae, non hai idea di che mi aiuto mi state dando tu e Ubu.
ti ringrazio ancora Vae, non hai idea di che mi aiuto mi state dando tu e Ubu.
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti