Назад | Перейти на главную страницу

Использование wget и Awk для подсчета похожих выражений

Я пытаюсь создать сценарий, использующий wget чтобы загрузить набор данных, а затем awk чтобы отсортировать файл и указать наиболее часто используемый фильтр, $14 столбец. Пока у меня есть wget функция работает, как показано ниже,

wget -O- http://energy.gov/sites/prod/files/FieldSampleAirResults_0.csv 

Но тогда я бы передал это awk скрипт или мне попробовать сделать все в одном скрипте? Кроме того, я знаю, как можно проверить общие слова, это будет что-то вроде

$14=="charcoal" {++charcoal} 

но я не уверен, как реализовать это в awk сценарий. Мы будем очень благодарны за любой совет или помощь.

Спасибо кевин

Это печатает наиболее часто встречающийся тип фильтра.

wget -O- http://energy.gov/sites/prod/files/FieldSampleAirResults_0.csv | awk -F, '
    {
        filters[$14]++
    }
    END {
        for (filter in filters) {
            if (filters[filter] > max) {
                max = filters[filter]
                type = filter
            }
        }
        print type
    }'

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

я хотел бы использовать uniq для обработки подсчета:

wget -O- http://energy.gov/sites/prod/files/FieldSampleAirResults_0.csv | cut -d, -f14 | sort | uniq -c

Обратите внимание, что это не будет правильно обрабатывать поля в кавычках, содержащие запятую. Если вам нужно справиться с этим, вам нужно что-то, что действительно понимает формат CSV, например, Python csv модуль:

python -c 'import csv; import sys; [sys.stdout.write(row[14]+"\n") for row in csv.reader(sys.stdin)]'