背景
需求产生的原因:今有一商户,有这个月每日的销量数据,想知道两个特定日期的销量,比如说10号和13号。这个时候用眼睛一扫就可以知道结果了。但是,如果需要在一年的数据中,找到给定的多个日期的销量,那么应该如何找呢?
使用到的文件
year.txt
2019/12/13 1
2019/12/14 2
2019/12/15 3
2019/12/16 4
2019/12/17 5
2019/12/18 6
2019/12/19 7
2019/12/20 8
2019/12/21 9
2019/12/22 10
2019/12/23 11
2019/12/24 12
2019/12/25 13
2019/12/26 14
2019/12/27 15
2019/12/28 16
2019/12/29 17
2019/12/30 18
2019/12/31 19
2020/1/1 20
2020/1/2 21
2020/1/3 22
2020/1/4 23
2020/1/5 24
2020/1/6 25
2020/1/7 26
2020/1/8 27
2020/1/9 28
day.txt
2019/12/20
2019/12/31
方案1 linux的join
由于默认是按照第一列进行排序,所以不需要使用参数即可。但是需要注意的是,join操作的两个文件需要按照一定的方式进行排序。
➜ scripts join year.txt month.txt
2019/12/20 8
2019/12/31 19
方案2 linux中的gawk
使用gawk就没那么多限制了,排序不排序的都无所谓了。
➜ scripts for line in $(cat month.txt); do gawk -v month=$line '$1 == month {print $0}' year.txt; done
2019/12/20 8
2019/12/31 19