Обработать текстовый файл и текстовый файл, заархивированный в формате gunzip, одной командой [дубликат]

0
17.04.2018, 18:46
3 ответа

zgrep распаковывает указанные файлы, при необходимости , затем передает результаты наgrep:

$ echo text one > log_1.log
$ echo text two > log_2.log
$ gzip log_2.log
$ zgrep text log_* | sort | uniq -c
  1 log_1.log:text one
  1 log_2.log.gz:text two
0
28.01.2020, 04:25

Если ваш вопрос конкретно как обработать текстовый файл и архивированный текстовый файл одной командой, см. другой вопрос. Но если ваш вопрос, в общем, как извлечь текст из разных типов файлов, используя разные инструменты, а затем обработать их таким же образом,

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
0
28.01.2020, 04:25
(cat mylog_1.log;zcat mylog_2.log.gz) | grep text | sort | uniq -c
0
28.01.2020, 04:25

Теги

Похожие вопросы