使用grep比较两个Python包列表

使用grep比较两个Python包列表,python,bash,list,shell,grep,Python,Bash,List,Shell,Grep,我想生成Python3中安装的包列表,Python2.7中所有包的列表,并查找2.7列表中的所有条目,而不是Python3列表中的条目 生成列表很容易:pip freeze或pip3.4 freeze 例如,在列表中搜索一个包同样很简单pip freeze | grep“wheel” 但是,如果我想搜索列表之间的交叉点,或者在本例中是非交叉点,我希望使用类似以下内容pip freeze | grep-n pip3.4 freeze 但是它告诉我,grep的参数显然不是文件或目录。我的shell脚

我想生成Python3中安装的包列表,Python2.7中所有包的列表,并查找2.7列表中的所有条目,而不是Python3列表中的条目

生成列表很容易:
pip freeze
pip3.4 freeze

例如,在列表中搜索一个包同样很简单
pip freeze | grep“wheel”

但是,如果我想搜索列表之间的交叉点,或者在本例中是非交叉点,我希望使用类似以下内容
pip freeze | grep-n pip3.4 freeze


但是它告诉我,grep
的参数显然不是文件或目录。我的shell脚本已经过时了,我模糊地记得应该有一种简单的方法来实现这一点,而不是将两个列表都传送到文件?

您也可以使用comm命令,如下所示

comm -12 <(pip freeze) <(pip3.4 freeze)

comm-12
grep-vf@123列出所有不在python3列表中的python2软件包我认为应该是
grep-vf@Kenavoz是的,tbh我没有真正读过这个问题,只是看到了
我想搜索列表之间的交叉点
这只在安装的软件包版本匹配时才有效,第二个示例将包名称或版本中的
视为通配符。类似于
grep-F-x-F的东西
grep -f <(pip freeze) <(pip3.4 freeze)