我试着根据id列比较两个文件,
A.txt包含ID、名称字段。
B.csv包含ID、名称、地点、日期
我想知道哪个月有a.txt的大部分身份证
我正试图在shell命令中这样做。
发布于 2020-10-07 14:59:06
您可以使用csvsql (来自基于Python的csvkit包):
$ csvsql --query '
SELECT strftime("%m",[ DATE]) AS [month], COUNT(*) AS [count]
FROM A INNER JOIN B ON A.[ID ] = B.[ID]
GROUP BY [month] ORDER BY [count] DESC LIMIT 1
' A.txt B.CSV
month,count
11,3注意,在超过一个月的情况下,LIMIT 1可能不会返回您想要的结果。
还请注意,您的字段名的前导/尾随空格数量似乎不一致。
IMHO不那么优雅,但你当然可以使用awk ex:
awk -F, '
NR==FNR {a[$1]; next}
$1 in a {
# NB not as robust as the csvsql version, which uses a proper strftime
month = substr($4,2,2); count[month]++
}
END {
for(m in count){
if(count[m] > count_max) {
count_max = count[m]; month = m
}
}
print month, count[month]
}
' A.txt B.CSVhttps://askubuntu.com/questions/1280837
复制相似问题