2015-07-18 3 views
1

У меня есть несколько сжат GZIP лог-файлы в каталоге, и они выглядят следующим образом:Bash скрипт пропуск поиска файлов в AWK [Mac]

log/day_1_time_log_1.log.gz 
... 
log/day_1_time_log_100.log.gz 
log/day_1_location_log_1.log.gz 
... 
log/day_1_location_log_100.log.gz 

Я хотел бы принять 4-й столбец (некоторые json строк) из всех журналы, содержащие строку time, и помещают их в один файл. Это то, что я сделал, и я получаю ошибку zcat: unknown compression format.

find logs/* -name *time* | zcat | awk -F"\t" '{ print $4 }' > output.json 

Что не так с моим кодом? Могу ли я передать это прямо в awk?

ответ

0

Вы можете использовать xargs:

find logs/ -name '*time*.log.gz' -print0 | 
    xargs -0 -I % gzcat % | awk -F'\t' '{print $4}' > output.json 
+0

Спасибо за ответ, но я получаю эту ошибку для каждого файла: 'zcat: не может стат: журналы/day_1_time_log_1.log.gz (журналы/day_1_time_log_1. log.gz.Z): Нет такого файла или каталога ' – Boxuan

+1

Я изменил' zcat' на 'gzcat', и он исправил проблему. Не могли бы вы уточнить свой ответ? Благодаря! – Boxuan