Linux join命令介绍
Join命令是Linux中的一个非常实用的工具,它可以用于通过一个共同的字段连接两个文件。其核心作用是将两个文件中含有相同字段的行连接在一起,输出到屏幕。这个过程类似于SQL数据库中的JOIN操作,因此其名字被称为“Join”。
Linux join命令适用的Linux版本
Linux join命令普遍适用于各版Linux发行版,包括但不限于 Ubuntu, Debian, Fedora, CentOS以及Red Hat等。例如,在CentOS 7和CentOS 8中,你可以通过以下命令安装这个工具:
CentOS 7下的安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install coreutils
CentOS 8下的安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install coreutils
Linux join命令的基本语法
语法格式:
join [OPTION]... FILE1 FILE2
Linux join命令的常用选项或参数说明
选项 | 说明 |
---|---|
-a FILENUM | 同时打印FILENUM文件中的非匹配行 |
-e EMPTY | 替换缺失输入字段的值为EMPTY |
-i | 不区分大小写 |
-t CHAR | 使用CHAR作为输入和输出字段分隔符 |
-v FILENUM | 打印FILENUM文件中的非匹配行 |
Linux join命令实例详解
实例1: 使用逗号作为分隔符
[linux@bashcommandnotfound.cn ~]$ join -t, file1.txt file2.txt
这个实例将分隔符更改为逗号。默认情况下,join命令将空格作为分隔符。
实例2: 打印所有匹配和非匹配的行
[linux@bashcommandnotfound.cn ~]$ join -a1 -a2 file1.txt file2.txt
实例3: 不区分大小写
[linux@bashcommandnotfound.cn ~]$ join -i file1.txt file2.txt
这个实例不会区分输入文件中的大写字母和小写字母。
实例4: 替换缺失的字段
[linux@bashcommandnotfound.cn ~]$ join -e "NULL" file1.txt file2.txt
这个实例会将所有缺失的输入字段替换为"NULL"。
实例5:连接两个以逗号分隔的CSV文件
[linux@bashcommandnotfound.cn ~]$ join -t ',' file1.csv file2.csv
在这个例子中,我们使用 -t
选项将逗号 ','
作为字段分隔符,这对处理 CSV 格式的文件非常有用。
实例6:显示第一个文件中独有的行
[linux@bashcommandnotfound.cn ~]$ join -v 1 file1.txt file2.txt
使用 -v
选项 followed by a 1
将会产出在 file1.txt 中,但不在 file2.txt 中的行。
实例7:指定连接字段
[linux@bashcommandnotfound.cn ~]$ join -1 2 -2 3 file1.txt file2.txt
在这个示例中,-1 2
指定了第一个文件的第二个字段作为用以连接的字段,-2 3
指定了第二个文件的第三个字段作为用以连接的字段。
实例8:忽略大小写进行连接
[linux@bashcommandnotfound.cn ~]$ join -i file1.txt file2.txt
此命令利用 -i 参数使得连接操作在比较时忽略大小写。
实例9:将无法匹配的字段补充为特定符号
[linux@bashcommandnotfound.cn ~]$ join -a 1 -a 2 -e "NA" file1.txt file2.txt
如果file1.txt和file2.txt 中有一些行无法进行匹配, 那么这些行上缺失的字段将会以"NA"进行填充。
实例10:指定输出格式
[linux@bashcommandnotfound.cn ~]$ join -o 1.2,2.1 file1.txt file2.txt
此命令利用-o 参数指定输出格式,1.2,2.1
代表输出的是第一个文件的第二个字段以及第二个文件的第一个字段。
Linux join命令的注意事项
- 文件须按字母或数字顺序排序
- 对于不存在的关联项,join命令不会输出任何信息
- bash: join: command not found,如果遇到命令找不到的提示,请按照上文的方法进行安装