SOLVED
Ho uno script (una riga sola) che prende un file di testo in input, sostituisce una certa cosa con un'altra cosa (un bip nel gcode) e scrive il risultato nell'output, tipo
sed -E "s/M117 Printing.*Layer/\nM300 S440 P100\nM117 Layer/" < $1 > $2
Se volessi sostituire DUE cose diverse (in righe diverse) cosa mi conviene fare?
Mandare il primo output su un file temporaneo, usarlo come input per fare la seconda sostituzione, mandarla in output e cancellare il temporaneo?
Questa voce è stata modificata (1 anno fa)
Tommi 🤯 reshared this.
rag. Gustavino Bevilacqua
Unknown parent • • •@asparago
You made my day
rag. Gustavino Bevilacqua
Unknown parent • • •@asparago
Infatti non ricordo da dove mi è uscita l'opzione "-E", che non la trovo né nella pagina man né nella pagina info.
Qui un indizio:
unix.stackexchange.com/questio…
What does sed's -E option do?
Unix & Linux Stack ExchangeElena ``of Valhalla''
in reply to rag. Gustavino Bevilacqua • •@Rag. Gustavino Bevilacqua io passerei ad un altro sed con un pipe, tipo
credo che ci sia modo di fare tutto con un colpo solo di awk, ma è troppo sbattito ricordarsi come :D
rag. Gustavino Bevilacqua
in reply to Elena ``of Valhalla'' • • •@valhalla @asparago
[SOLVED] con DUE -e:
sed -e "s/M117 Printing.*Layer/\nM300 S440 P100\nM117 Layer/" -e "s/;script: PauseAtHeight.py/\nM300 S435 P500\nM300 S488 P500\nM300 S435 P500\nM300 S488 P500\nM300 S435 P500\nM300 S488 P500\n/" < $1 > $2
A vista il gcode generato funziona.
Elena ``of Valhalla'' likes this.
cage
in reply to Elena ``of Valhalla'' • • •> @GustavinoBevilacqua
> credo che ci sia modo di fare tutto con un colpo solo di awk, ma è troppo sbattito ricordarsi come :D
Io sostengo sempre l'opzione AWK! :))
Forse dovrebbe essere qualcosa del genere (se ho capito il problema):
----✀--------✀--------✀----
#!/usr/bin/env -S awk -f
/a/ { sub(/a/,"b"); print $0 }
/x/ { sub(/x/,"y"); print $0 }
----✀--------✀--------✀----
Ciao!
C.
rag. Gustavino Bevilacqua reshared this.
rag. Gustavino Bevilacqua
in reply to cage • • •@cage @valhalla
Ha funzionato bene con sed… non lo tocco più o si rompe 😄
rastinza
in reply to cage • • •No, per favore. Almeno per le sostituzioni di testo niente awk.
Ogni volta che devo scrivere un programma awk impazzisco.
rag. Gustavino Bevilacqua reshared this.
cage
in reply to rastinza • • •>
> @cage @GustavinoBevilacqua @valhalla
> No, per favore. Almeno per le sostituzioni di testo niente awk.
> Ogni volta che devo scrivere un programma awk impazzisco.
Beh, effettivamente dà il suo meglio quando devi riarrangiare l'input,
pero' non lo snobberei: la versione GNU puo' anche aprire i socket :)
gnu.org/software/gawk/manual/g…
Ciao!
C.
Gawkinet: TCP/IP Internetworking with Gawk - GNU Project - Free Software Foundation
www.gnu.orgrag. Gustavino Bevilacqua reshared this.
absc
in reply to cage • • •E' sempre il problema con il software GNU:
Non capiscono mai quando e' ora di fermarsi con le features.
E comunque:
ED IS THE STANDARD TEXT EDITOR.
Elena ``of Valhalla'' likes this.
rag. Gustavino Bevilacqua reshared this.
rag. Gustavino Bevilacqua
in reply to absc • • •@absc @cage @rastinza @valhalla
La sindrome del coltellino svizzero…
rastinza
in reply to absc • • •rag. Gustavino Bevilacqua reshared this.
cage
in reply to absc • • •@AJFWuO50Cp7c1J4ybg.absc@clacson.abiscuola.org
> @rastinza @GustavinoBevilacqua
> E' sempre il problema con il software GNU:
>
>
> Non capiscono mai quando e' ora di fermarsi con le features.
>
>
> E comunque:
>
>
> ED IS THE STANDARD TEXT EDITOR.
E inoltre: there is only one true AWK :) :)
Ciao!
C.
❄️ freezr ❄️
in reply to cage • • •@cage @absc
"Ed" è quello che è ancora più complicato di Vi(m)...
E questo mi rimanda alle mie memorie di infanzia quando mio padre (ora pensionato) lavorava al ex CNEN (attualmente ENEA) e si fece una lunga missione negli USA.
In quest'epoca conosce un ricercatore Italiano che per non farsi fregare gli studi, si portava a casa l'intero computer e già vi lascio immaginare le dimensioni di un computer degli anni '80...
Ora che c'entra questo con questi editors?
La verità è che sono astrusamente complicati, e difficili da imparare, e sotto sotto ci vedo una certa malizia... L'intenzione di scoraggiare i più all'uso dell'ordinatore elettronico quando l'unico modo di interagire era una console/shell, e di conseguenza favorire una elite di studiosi e professionisti che non si sentivano a disagio con i suddetti editors...
cage
in reply to ❄️ freezr ❄️ • • •Ciao!
> @cage @GustavinoBevilacqua
[...]
> In quest'epoca conosce un ricercatore Italiano che per non farsi
> fregare gli studi, si portava a casa l'intero computer e già vi
> lascio immaginare le dimensioni di un computer degli anni '80...
Ah, un tipo con molta fiducia nel prossimo, quindi! :D
>
> Ora che c'entra questo con questi editors?
>
> La verità è che sono astrusamente complicati, e difficili da
> imparare, e sotto sotto ci vedo una certa malizia... L'intenzione di
> scoraggiare i più all'uso dell'ordinatore elettronico quando l'unico
> modo di interagire era una console/shell, e di conseguenza favorire
> una elite di studiosi e professionisti che non si sentivano a
> disagio con i suddetti editors...
Bisogna anche considerare che quando nacquero, le risorse di calcolo e
di memoria erano quelle che erano e, giocoforza, qualche compromesso
lo si doveva fare. Sul mio sistema, comunque, "ed" non e' installato
piu'. :)
Ciao!
C.
rag. Gustavino Bevilacqua
in reply to cage • • •@cage @freezr
Meglio avere software che non si usa che non avere software che può servire… non sapevo neppure che ci fosse 😁
cage
in reply to rag. Gustavino Bevilacqua • • •>
> @cage /at/freezr
>
> Meglio avere software che non si usa che non avere software che può servire… non sapevo neppure che ci fosse 😁
Lasciatemi rispolverare, allora:
gnu.org/fun/jokes/ed-msg.html
:) :) :)
Ciao!
C.
--
Non ho mai creduto troppo a nulla, poi non ho creduto assolutamente più a nulla
-- Margherita Hack
Ed, man! !man ed- GNU Project - Free Software Foundation (FSF)
www.gnu.orgop
in reply to cage • • •@valhalla@social.gl-como.it @GustavinoBevilacqua@mastodon.cisti.org
all hail awk!
per quanto awk sia fantastico, forse sed è più indicato in questo caso però ;)
(comunque ti mancherebbe un "next" dopo il primo match, l'OP chiedeva di sostituire in righe diverse :P)
absc
in reply to Elena ``of Valhalla'' • • •@@social.gl-como.it @asparago
Si puo' fare anche in un colpo solo di sed, volendo:
Dovrebbe essere cosi' :)
rag. Gustavino Bevilacqua
in reply to absc • • •@absc @valhalla @asparago
Questo fa bip a ogni cambio layer e mi suona una sirena da pompieri quando devo cambiare filamento… tutto in una riga!
sed -e "s/M117 Printing.*Layer/\nM300 S440 P100\nM117 Layer/" -e "s/;script: PauseAtHeight.py/\nM300 S435 P500\nM300 S488 P500\nM300 S435 P500\nM300 S488 P500\nM300 S435 P500\nM300 S488 P500\n/" < $1 > $2
cage likes this.
op
in reply to Elena ``of Valhalla'' • • •@valhalla@social.gl-como.it @GustavinoBevilacqua@mastodon.cisti.org @@social.gl-como.it @asparago @cage@stereophonic.space
puoi anche usare più volte -e per specificare più comandi in un solo colpo per sed:
% echo foo bar | sed -e s/foo/Foo/ -e s/bar/Bar/
Foo Bar
se devi fare attenzione a non sostituire in certe righe puoi o sbizzarrirti con il match, ad esempio:
% printf '%s\n' 'foo bar' 'foo baz' | sed -e '/bar/s/foo/Foo/'
Foo bar
foo baz
(cambia "foo" con "Foo" solo nelle righe che matchano /bar/)
oppure ricorrere ad uno script sed un filino più complesso
% printf '%s\n' 'foo bar' 'foo baz' | sed 's/bar/Bar/ ; t ; s/foo/Foo/'
foo Bar
Foo baz
("t" fa un salto alla fine dello script se nella riga corrente è avvenuta una sostituzione.)
rag. Gustavino Bevilacqua
Unknown parent • • •@asparago
Ora ci provo…
Lo script deve prendere il gcode generato da Cura, aggiungere un bip a ogni cambio layer e una sirena da pompieri quando c'è da cambiare filamento.
Usando Cura come appimage mi mette male andare a modificare gli addon, altrimenti lo farei.
Spero che @cronomaestro prima o poi mi installi OctoPrint, così faccio tutto da lì anziché usare tre o quattro programmi separati.
rag. Gustavino Bevilacqua
Unknown parent • • •@asparago @cronomaestro
😄
Il gcode è un file di testo che dice alle macchine a controllo numerico (stampante 3d, fresatrice, ecc.) cosa fare.
Cura è uno "slicer" che affetta un solido e crea il gcode per stamparlo, uno strato alla volta.
Octoprint ti permette di dare degli schiaffi sul collo alla stampante 3D e farle fare quel che vuoi tu anziché dover dipendere da impostazioni predefinite.
sbarrax aka Marco Frattola reshared this.
rag. Gustavino Bevilacqua
Unknown parent • • •@brokenlink @valhalla @asparago
Ah, oggi è domenica?
rastinza
Unknown parent • • •Guarda, ci saranno tante lamentele da fare su systemd; però almeno funziona ed è moderatamente semplice da capire nonostante la marea di funzionalità che offre.
Di certo lo trovo più comodo rispetto a init + cron dove invece ti devi fare tutti gli script ad hoc per ogni programma che vuoi far girare.
Però... a che mi serve aprire socket con awk?