[Risolto] Bash script
[Risolto] Bash script
Scusate se posto una richiesta stupida ma per me sarebbe importante venirne a capo.
Con un bash script volevo ottenere: cercare una parola in file testo e sostituire frase nella riga immediatamente precedente a quella dove ho trovato la parola..
Ho scritto questo ma non funziona
codice:
#!/bin/sh
if grep -qs 'povero' cat /storia/prova.txt
then
echo 'povero' trovato'
sed -in '/povero/;h s/prova ancora/non provare piu'/g' /storia/prova.txt;
else
echo 'povero non trovato';
fi
Vi ringrazio anticipatemente..
Con un bash script volevo ottenere: cercare una parola in file testo e sostituire frase nella riga immediatamente precedente a quella dove ho trovato la parola..
Ho scritto questo ma non funziona
codice:
#!/bin/sh
if grep -qs 'povero' cat /storia/prova.txt
then
echo 'povero' trovato'
sed -in '/povero/;h s/prova ancora/non provare piu'/g' /storia/prova.txt;
else
echo 'povero non trovato';
fi
Vi ringrazio anticipatemente..
Ultima modifica di pablonero il venerdì 6 maggio 2016, 10:35, modificato 1 volta in totale.
Re: bAsh script
Puoi usare ex:
Codice: Seleziona tutto
ex -s +'/TESTO DA TROVARE/-1 s/TESTO DA SOSTITUIRE/TESTO DI SOSTITUZIONE/g | x' filename.txt
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Re: bAsh script
si puo' usare un comando alternativo ad ex perche' mi da comando non trovato....
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Bash script
installalo, magari ti torna utile, oppure usa ed che dovrebbe esserci già
occhio che sovrascrive il file, sostituisci \nw con \n,p per vedere solo che fa.
Codice: Seleziona tutto
ed -s FILE <<< $'/RIGA_MATCH/-1s/PATTERN/SOST/g\nw'
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Bash script
Non mi mandate a quel paese mi ero dimenticato di dire che lo script bash deve essere eseguito in un decoder enigma2..crap0101 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4878513#p4878513][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:installalo, magari ti torna utile, oppure usa ed che dovrebbe esserci giàocchio che sovrascrive il file, sostituisci \nw con \n,p per vedere solo che fa.Codice: Seleziona tutto
ed -s FILE <<< $'/RIGA_MATCH/-1s/PATTERN/SOST/g\nw'
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Bash script
non c'è neanche ed? :-(pablonero ha scritto: Non mi mandate a quel paese mi ero dimenticato di dire che lo script bash deve essere eseguito in un decoder enigma2..
visto che usavi sed - che non poteva funzionare per vari motivi - prova questo (esempio):
Codice: Seleziona tutto
crap0101@orange:/tmp/foo$ cat testo
adffwe
edfefew
povero
fedfwef
rgfrwefef
e
crap0101@orange:/tmp/foo$ sed -n '1{x;d};${x;p};/povero/{x;s/f/X/g;p;x;h};/povero/!{x;p;x;h}' testo
adffwe
edXeXew
povero
fedfwef
rgfrwefef
e
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Bash script
Vi ringrazio per le risposte. Purtroppo non sono riuscito ad applicare i consigli di crap0101.
Ricapitolando usando sed avendo poche comandi a disposizione (enigma2)
testo da trovare =testo
riga precendente dove ho trovato testo da trovare sostituisco testo1 con testo2 (tutto sempre riferito a file esempio.txt)
non ho capito come verrebbe l'espressione....
Ricapitolando usando sed avendo poche comandi a disposizione (enigma2)
testo da trovare =testo
riga precendente dove ho trovato testo da trovare sostituisco testo1 con testo2 (tutto sempre riferito a file esempio.txt)
non ho capito come verrebbe l'espressione....
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Bash script
"povero" è il "povero" del tuo esempio, mentre i "prova ancora" e "non provare piu'" sono rispettivamente la "f" e la "X" della parte in grassetto
mentre "testo" è il file in inputcrap0101@orange:/tmp/foo$ sed -n '1{x;d};${x;p};/povero/{x;s/f/X/g;p;x;h};/povero/!{x;p;x;h}' testo
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Bash script
Grande crap0101, funziona; ho dovuto solo aggiungere "i" altrimenti non scrive.
quindi risolto con
cat testo
sed -ni '1{x;d};${x;p};/povero/{x;s/f/X/g;p;x;h};/povero/!{x;p;x;h}' testo
Grazie ancora..
quindi risolto con
cat testo
sed -ni '1{x;d};${x;p};/povero/{x;s/f/X/g;p;x;h};/povero/!{x;p;x;h}' testo
Grazie ancora..
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti