首先贴一个,join –help
然后来理解下。
join 【命令选项】 文件1 文件2
//命令选项可以很多, 但文件只能是两个
先从重要的开始说,join 的作用是把两个文件对一列求交集,然后输出交集部分。
来先看个基本的例子:
为什么得到上面的结果,因为join默认使用空格作为分隔符(可以使用-t设定分割符),使用第一行作为主列(用于求交集的列)。
如果要将所有内容都出来呢,不管有没有配对。可以使用-a命令。
//可以发现,A.txt中没有配对的内容在文件的末尾被输出了。
同样可以把A.txt 和 B.txt都输出来。
但是这时候却发现,排版和我们想的不一样。最后两行根本分不清是来战A.txt还是B.txt。
这时候就要用-o命令和-e命令了。
其中-e表示如果元素不存在时填充什么, -o 表示以哪种形式输出(1.1 表示文件1中的第一列)。
如何求A.txt中有,而B.txt中没有的呢?
这时候就需要使用-v了
输出了A中有而B中没有的部分。
另外-i 忽略大小写
-j x 相当于同时写了-1x -2x
也就是指定两个文件的x列作为主列。
join内部是怎么实现的呢,我们来看join中的重要要求,每个文件的主列都必须是排好序的!!!
是不是一下就知道了join是怎么实现的了,就是两个有序的数组求交集嘛。是不是对join的复杂度也有了更深的理解。忽略列的大小的情况下,O(n + m)就可以完成了,其中n为文件1的行数,m是文件2的行数。
Original: https://www.cnblogs.com/chenhuan001/p/7607674.html
Author: chenhuan001
Title: shell join详解
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529761/
转载文章受原作者版权保护。转载请注明原作者出处!