Если ваш вопрос конкретно как обработать текстовый файл и архивированный текстовый файл одной командой, см. другой вопрос. Но если ваш вопрос, в общем, как извлечь текст из разных типов файлов, используя разные инструменты, а затем обработать их таким же образом,
for file in mylog_1.log mylog_2.log.gz …
do
if [[ "$file" == *.gz ]]
then
zcat "$file"
else
cat "$file"
fi | grep text | sort | uniq -c
done
Это будет обрабатывать каждый файл отдельно. Чтобы объединить (объединить )их и обработать совокупный текст как единое целое, просто переместите трубу:
for file in mylog_1.log mylog_2.log.gz …
do
if [[ "$file" == *.gz ]]
then
zcat "$file"
else
cat "$file"
fi
done | grep text | sort | uniq -c
(cat mylog_1.log;zcat mylog_2.log.gz) | grep text | sort | uniq -c