由网络副手--寻路人于2016.05.25 17:08:13发布在Linux Shell linux命令文本内容比较之comm 取交集、差集、补集 阅读4038 评论0 喜欢1 最近有个需求需要需要从400个数据库表中找出哪些用户在3个月内没有回答过问题. 先说下 每个数据库表的数据在千万左右,如果你想省事用子查询或者联合查询,这种想法首先pass. 下面说说我的思路. 1. 从数据中查询3个月内回答过问题的用户记录下来 2. 找出3个月之前回答过问题的用户. 3. 找出三个月前回答问题的用户中 不包含 3个内回答问题的用户,则这个就是我们要的结果 这里可以使用命令:可以对导出数据进行先 sort 然后在 用户comm 命令对比,即可非常容易的得到结果. 下面说下 comm 命令: 有两个文件 a.txt vim a. txt aaa bbb ccc ddd vim b.txt 111 222 bbb ccc eee 这样我们来看下 通过comm命令后的效果 comm a.txt b.txt 列1 列2 列三 111 222 aaa bbb ccc ddd eee 列1 为只有前面一个文件独有的数据 列2 为只有第二个文件中独有的数据 列3 为两个文件都有的 如果不想要那个列出现 只需要通过用减号 减掉即可. 例如: 只想想要列1的数据 则: comm -23 a.txt b.txt 即可,这样也完成了最上面的需求 注意: 此命令如果数据不是排序的情况下就不准了. 如果对未知的两份数据咱们最好先排序后再处理: 意则: 先排序,再唯一 然后在对比取出第一列 comm -23 <(sort a.txt|uniq ) <(sort b.txt|uniq ) 赞 1 分享 赏 您可以选择一种方式赞助本站 支付宝扫码赞助 BraveDu 署名: 网络副手~寻路人