Sto provando a cercare una determinata stringa in un sacco di file CSV gzip, la stringa si trova nella prima riga e il mio pensiero era di ottenere la prima riga di ogni file combinando find, zcat e head. Ma non riesco a farli lavorare insieme.trovare i risultati con piping su zcat e quindi su capo
$find . -name "*.gz" -print | xargs zcat -f | head -1
20051114083300,1070074.00,0.00000000
xargs: zcat: terminated by signal 13
example file:
$zcat 113.gz | head
20050629171845,1069335.50,-1.00000000
20050629171930,1069315.00,-1.00000000
20050629172015,1069382.50,-1.00000000
.. and 2 milion rows like these ...
Anche se ho risolto il problema scrivendo uno script bash, scorrere il file e la scrittura di un file temporaneo, sarebbe bello sapere che cosa ho fatto di sbagliato, come farlo, e se ci potrebbe essere altri modi per farlo.
ha funzionato perfettamente, grazie. Non sapevo che potevi usare mentre leggevi così, me lo ricorderò. – furedde
Puoi anche usare: 'per f in * .gz; do zcat $ f | testa -n 1; done' – arekolek
@arekolek: che non è ricorsivo a meno che non si usi 'shopt -s globstar; per f in **/*. gz', mentre 'find' è ricorsivo a meno che non lo si limiti con' -maxdepth'. –