Я хочу вернуть количество уникальных элементов в одном столбце моего gzip-файла. Я знаю, что для сортировки обычного файла вы можете использовать что-то вроде:

sort -u -t, -k1,1 filename | wc -l

Но когда я запускаю это в файле gzip, я получаю:

?BC??\ks?ʑ???

Можно ли изменить этот формат, чтобы найти уникальные элементы в столбце, учитывая файл gzip?

0
amc 18 Фев 2016 в 16:54

3 ответа

Лучший ответ

Хорошо, я действительно понял это!

gzcat vcf_del.vcf.gz | cut -f 2 | sort | uniq | wc -l (и zcat тоже работает)

Затем, если есть части файла, которые вам не нужны (например, в файлах VCF есть ряд строк с "#"), вы можете просто удалить их как таковые:

gzcat vcf_del.vcf.gz | awk '!/^#/{print $0}' | cut -f 2 | sort | uniq | wc -l

2
amc 21 Мар 2019 в 04:06

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

Вы можете попробовать команду ниже

gunzip -c filename | sort -u -t -k1,1
0
Elixir Techne 18 Фев 2016 в 13:58

В пакет gzip входит программа zcat, которая работает так же, как cat, но работает с файлами gz.

zcat filename | sort -u -t -k1,1
1
Danny Dyla 18 Фев 2016 в 14:31