Centos/Linux Bash sed: massa conversione epoche tra l'altro testo casuale
Ho un file di log, che ha un sacco di testo e numeri in epoca in tutto il luogo. Voglio sostituire tutte le epoche dovunque siano in data/ora leggibili.
Ho voluto questo via tramite sed, come sembra lo strumento per il lavoro. Non riesco a ottenere la parte di ricambio di sed per analizzare effettivamente la variabile (epoca) ad essa per la conversione.
Esempio di quello che sto lavorando con ...
echo "Some stuff 1346474454 And not working" \
| sed 's/1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/'"`bpdbm -ctime \&`"'/g'
Some stuff 0 = Thu Jan 1 01:00:00 1970 And not working
La parte bpdbm convertirà una variabile un'epoca in dotazione nella data utile. Mi piace ..
bpdbm -ctime 1346474454
1346474454 = Sat Sep 1 05:40:54 2012
Così come faccio ad analizzare l'elemento "trovato" in un comando. Come non sembra essere in grado di farlo funzionare.
Qualsiasi aiuto sarebbe bello. Se c'è un altro modo, sarebbe bello ... ma sospetto che sed sarà più veloce.
Grazie per il vostro tempo!
esegui questo con 'set -vx' per capire perché non funziona.Sed deve elaborare la riga di dati prima che "sappia" il valore di "&", la sottotitolazione di cmd dovrebbe essere ritardata fino all'ultima cosa, ma è probabile che la prima cosa che viene elaborata. Puoi farlo facilmente in awk. La tua fiducia in sed è commovente ;-). In bocca al lupo! – shellter
Beh, sì ... piacerebbe provare e continuare a sed e awk dove possibile. Avrà un altro gioco con Sed domani, non ho rinunciato a una risoluzione basata su sed – user1649704