Ho necessità di avere alcuni messggi personalizzati. il programma cheuno script?
li gestisce però non consente di aprire un pipe passando marametri a
un programma, ma solo di prendere singoli file di testo.
Non nè un grosso problema in quanto i cambi sono relativamante
infrequenti (al massimo due volte al giorno, di solito una o due volte
al mese) quindi pensavo di usare uno script lanciato ogni 30 minuti
che legge su una directory se ci sono dei file parziali aggiornati e
se ci sono aggiorna i file "totali".
Spiego meglio:
ho una serie di file chiamati WISnn!#.txt dove nn è un numero
progressivo ! e # sono due caratteri alfanumerici .
I file completi sarebbero WIS!#.txt generati da un qualcosa come
cat WIS??[RMS0][130].txt > WISaz.txt
quali sono i dubbi:
nn è un progressivo, quindi la concatenazione dovrebbe avvenire in
ordine rigorosamente progressivo ( come nelle directory .d dei file di configurazione) [quin di i file sono aggiunti nell'ordine del la rappresentazione ASCII del nome].
Il comando di concatenazione nel caso esposto se ci sono più file
dovrebbe prendere il primo della lista [nel caso in esempio se
esistono WIS33S1.txt e WIS3303.txt dovrebbe prendere il primo e basta
e passare quindi a WIS34… (ossia pr ogni progressivo dato dai
caratteri al quarto e quinto posto prendere il primo della lista e
passare alla "regola" successiva.)
e questo mi pare che cat non lo faccia.
cosa posso fare ?
On Wed, 31 Jul 2024, Piviul wrote:
Il comando di concatenazione nel caso esposto se ci sono più fileuno script?
dovrebbe prendere il primo della lista [nel caso in esempio se
esistono WIS33S1.txt e WIS3303.txt dovrebbe prendere il primo e basta
e passare quindi a WIS34… (ossia pr ogni progressivo dato dai
caratteri al quarto e quinto posto prendere il primo della lista e
passare alla "regola" successiva.)
e questo mi pare che cat non lo faccia.
cosa posso fare ?
cero ma mi serve saper: se faccio cat WIZE??[10][SF0].part > WIZE.txt
tuuti i file che trova vengono conctenati in ordine alfabetico del
nome o in modo semicausale, per cui dovrei fare prima un ls (che mi da comuneque in ordine alfabetico e poi passale l'output di questo a xargs ?
cero ma mi serve saper: se faccio cat WIZE??[10][SF0].part > WIZE.txt tuuti >> i file che trova vengono conctenati in ordine alfabetico del nome o in modo >> semicausale, per cui dovrei fare prima un ls (che mi da comuneque in ordine >> alfabetico e poi passale l'output di questo a xargs ?
Non so se ho ben capito, oltre al problema dell'ordinamento c'è poi il problema del fatto che non li vuoi prendere tutti; se è così cat non credo da
solo sia in grado di leggere quel che vuoi tu con un solo comando, devi usare uno script. Non è molto elegante ma a me viene in mente qualcosa tipo:
for f in $(ls -1); do oldprefix=$prefix; prefix=$(echo $f | grep -o ^......); [ "$oldprefix" = "$prefix" ] && continue; echo $f; done
Piviul
On Fri, 2 Aug 2024, Piviul wrote:
cero ma mi serve saper: se faccio cat WIZE??[10][SF0].part >
WIZE.txt tuuti i file che trova vengono conctenati in ordine
alfabetico del nome o in modo semicausale, per cui dovrei fare prima
un ls (che mi da comuneque in ordine alfabetico e poi passale
l'output di questo a xargs ?
Non so se ho ben capito, oltre al problema dell'ordinamento c'è poi
il problema del fatto che non li vuoi prendere tutti; se è così cat
non credo da solo sia in grado di leggere quel che vuoi tu con un
solo comando, devi usare uno script. Non è molto elegante ma a me
viene in mente qualcosa tipo:
non li prendo tutti, la selezione è fatta nel mio caso da [10][SF0]
dove presno solo, se ci sono, 1S 1F 10 0S 0F 00 , altre combinazioni
vengono ignorate. e nella creazione dei file faccio in modo che di
questi per ogno progressivo ?? ce ne sia uno solo.
quindi il dubbio è : cat li prende in ordine rigolrosamente alfabetico
(con le cifre qprime delle maiuscole e le maiuscole prima delle
minuscole)?
non li prendo tutti, la selezione è fatta nel mio caso da [10][SF0] dove >presno solo, se ci sono, 1S 1F 10 0S 0F 00 , altre combinazioni vengono >ignorate. e nella creazione dei file faccio in modo che di questi per ogno >progressivo ?? ce ne sia uno solo.
quindi il dubbio è : cat li prende in ordine rigolrosamente alfabetico
(con le cifre qprime delle maiuscole e le maiuscole prima delle
minuscole)?
non li prendo tutti, la selezione è fatta nel mio caso da [10][SF0]
dove presno solo, se ci sono, 1S 1F 10 0S 0F 00
in modo che di questi per ogno progressivo ??
Ho necessità di avere alcuni messggi personalizzati. il programma che
li gestisce però non consente di aprire un pipe passando marametri a
un programma, ma solo di prendere singoli file di testo.
Non nè un grosso problema in quanto i cambi sono relativamante
infrequenti (al massimo due volte al giorno, di solito una o due volte
al mese) quindi pensavo di usare uno script lanciato ogni 30 minuti
che legge su una directory se ci sono dei file parziali aggiornati e
se ci sono aggiorna i file "totali".
Spiego meglio:
ho una serie di file chiamati WISnn!#.txt dove nn è un numero
progressivo ! e # sono due caratteri alfanumerici .
I file completi sarebbero WIS!#.txt generati da un qualcosa come
cat WIS??[RMS0][130].txt > WISaz.txt
quali sono i dubbi:
nn è un progressivo, quindi la concatenazione dovrebbe avvenire in
ordine rigorosamente progressivo ( come nelle directory .d dei file di configurazione) [quin di i file sono aggiunti nell'ordine del la rappresentazione ASCII del nome].
Il comando di concatenazione nel caso esposto se ci sono più file
dovrebbe prendere il primo della lista [nel caso in esempio se
esistono WIS33S1.txt e WIS3303.txt dovrebbe prendere il primo e basta
e passare quindi a WIS34… (ossia pr ogni progressivo dato dai
caratteri al quarto e quinto posto prendere il primo della lista e
passare alla "regola" successiva.)
e questo mi pare che cat non lo faccia.
cosa posso fare ?
| Sysop: | Keyop |
|---|---|
| Location: | Huddersfield, West Yorkshire, UK |
| Users: | 715 |
| Nodes: | 16 (2 / 14) |
| Uptime: | 41:52:34 |
| Calls: | 12,109 |
| Files: | 15,006 |
| Messages: | 6,518,416 |