我正在尝试创建一个脚本,用于wget
下载数据集,然后awk
对文件进行排序,并告诉您最常用的过滤器是$14
列。到目前为止,我的wget
函数运行如下,
wget -O- http://energy.gov/sites/prod/files/FieldSampleAirResults_0.csv
但是,我应该将其通过管道传输到awk
脚本中,还是应该尝试在一个脚本中完成所有操作?另外,我知道你会如何检查常用词,它会是这样的
$14=="charcoal" {++charcoal}
但我不确定如何在awk
脚本中实现这一点。任何建议或帮助都将不胜感激。
谢谢,凯文
答案1
这将打印最常出现的过滤器类型。
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
实用程序。
答案2
我将用它uniq
来处理计数:
wget -O- http://energy.gov/sites/prod/files/FieldSampleAirResults_0.csv | cut -d, -f14 | sort | uniq -c
请注意,这无法正确处理包含逗号的引号字段。如果您需要处理这个问题,您需要一些真正理解 CSV 格式的东西,比如 Python 的源文件模块:
python -c 'import csv; import sys; [sys.stdout.write(row[14]+"\n") for row in csv.reader(sys.stdin)]'