背景:
PM 总会提一些数据需求,有的数据跑一个 hive 语句也就出来了,在 excel 整理一下,就可以发给 PM 了,但是有的数据需要对多个数据文件做整合操作,这时候该怎么办呢?总结了一些常用的操作,以一个例子的形式展现给大家。
两份文件,名称和内容如下:
文件t1.log
2
4
5
1
2
3
文件t2.log
2
34
5
56
6
1
3
4
56
4
2
得到两个文件的并集数据
思路:合并—排序—去重
sort -n t1.log t2.log | uniq
结果
1
2
3
4
5
6
34
56
得到两个文件的交集数据
思路:连个文件分别去重得到2个新文件—合并—去重--判断重复次数大于1
sort -n t1.log | uniq > uniq_t1.log
sort -n t2.log | uniq > uniq_t2.log
sort -n uniq_t1.log uniq_t2.log | uniq -c |awk '$1>1 {print $2}'
结果
1
2
3
4
5
只在文件1中存在的结果
diff -y uniq_t1.log uniq_t2.log | awk '/<|\\|/ '
结果
空
只在文件2中存在的结果
diff -y uniq_t1.log uniq_t2.log | awk '/>|\\|/ ' | awk '{print ($1~/\\>/?$3:$2)}'
结果
6
34
56