Sostituire i campi

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

Sostituire i campi

Messaggio da meme_14 »

Ciao a tutti!
Nei log vorrei sostituire il campo 'data' con una nuova modificata in un formato più utilizzabile.
Il codice è più o meno così:

Codice: Seleziona tutto

while  read - r line
                 do
                                ......operazioni sulla riga.......
                  sed -i 's/vecchia/nuova/g' nome_log
                 done < nome log
Ma il comando sed non mi funziona correttamente! Come posso fare?
Grazie mille!
Avatar utente
giulux
Amministratore
Amministratore
Messaggi: 25422
Iscrizione: domenica 10 gennaio 2010, 12:17
Desktop: ubuntu 18.04
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Sesso: Maschile
Località: Roma

Re: Sostituire i campi

Messaggio da giulux »

Benvenuto nel forum!
Non mi pare proprio un dilemma da principiante: sposto in programmazione.
Leggete per favore la descrizione di "Dilemmi di principianti" prima di postare tutto lì. ;)
Ciao.
"Non è una segno di buona salute l'essere ben adattato ad una società malata". (Jiddu Krishnarmurti)
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12943
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: Sostituire i campi

Messaggio da thece »

:ciao:

secondo me stai usando sed in modo scorretto: vuoi applicare il comando sed alla singola riga oppure all'intero file? Nel primo caso non serve l'opzione -i, nel secondo il ciclo while
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

Re: Sostituire i campi

Messaggio da meme_14 »

Lo utilizzo riga per riga! Ma pur non inserendo il -i non mi sostituisce la data!
Avatar utente
thece
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 12943
Iscrizione: lunedì 23 aprile 2007, 14:16
Distribuzione: Debian 12 (Bookworm) - KDE

Re: Sostituire i campi

Messaggio da thece »

Codice: Seleziona tutto

#!/bin/bash

cat "aInputTextFile.txt" | while read LINE; do
        echo "$LINE" | sed 's/OLD_STRING/NEW_STRING/' >> "aOutputTextFile.txt"
done

exit 0
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Sostituire i campi

Messaggio da UbuNuovo »

Si, 'cat', 'echo' e i pipe si possono eliminare:

Codice: Seleziona tutto

while read line; do
	# old_string=$(......operazioni sulla riga.......)
	# new_string=$(......operazioni sulla riga.......)
	sed "s/$old_string/$new_string/" <<< "$line" >> "aOutputTextFile.txt"
done < "aInputTextFile.txt"
Salva l'Ucraina! 🇺🇦
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

Re: Sostituire i campi

Messaggio da meme_14 »

Grazie!
Ma facendo così creo un nuovo file con le modifiche giusto? Le modifiche non vengono fatte in quello di input?
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Sostituire i campi

Messaggio da UbuNuovo »

Si, semmai appena uscito da ciclo puoi sostituire il file di log vecchio con quello elaborato, basta usare 'mv'.
Salva l'Ucraina! 🇺🇦
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

Re: Sostituire i campi

Messaggio da meme_14 »

Perfetto! Grazie mille! 😊
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Sostituire i campi

Messaggio da UbuNuovo »

Ringrazia Thece, io ho solo affinato. :)
Ciaux
Salva l'Ucraina! 🇺🇦
meme_14
Prode Principiante
Messaggi: 14
Iscrizione: venerdì 14 aprile 2017, 7:54
Sesso: Femminile

Re: Sostituire i campi

Messaggio da meme_14 »

Grazie a entrambi! 😊
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 13 ospiti