Я пытаюсь создать сценарий, использующий 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)]'