本文主要是介绍Linux join命令的使用及说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo...
一. 基本语法
join 是 linux 中用于按字段将两个文件进行连接的命令,功能类似 SQL 的 JOIN。
- 要求两个文件按 用于匹配的字段排序好,一定要排序,否则无法正确join
- 要求用于join的第一个文件的换行符是LF,一定不能是CRLF,否则无法正确匹配
| 参数 | 说明 |
|---|---|
| -1 N | 指定 file1 用第 N 字段作为连接键 |
| -2 N | 指定 file2 用第 N 字段作为连接键 |
| -t CHAR | 设置字段分隔符(如 -t , 表示用逗号) |
| -o FORMAT | 指定输出字段的格式,例如:-o 0 1.2 2.3 |
| -a 1 | 输出 file1 中所有行(即使没有匹配),相当于 LEFT OUTER JOIN |
| -a 2 | 输出 file2 中所有行(即使没有匹配),相当于 RIGHT OUTER JOIN |
| -a 1 -a 2 | 输出所有行(匹配和未匹配),相当于 FULL OUTER JOIN |
| -e STRING | 指定空字段填充值,用于 -a 显示未China编程匹配时 |
| -i | 忽略大小写(等价于 --ignore-case) |
| -v 1 | 仅显示 file1 中未匹配的行 |
| -v 2 | 仅显示 file2 中未匹配的行 |
二. 数据准备
apluser@FengYeHong-HP:0725$ cat students1.txt
101 Alice
102 Bob
103 Carol
apluser@FengYeHong-jsHP:0725$ cat scores1.txt
101 80
102 90
104 95
apluser@FengYeHong-HP:0725$ cat students2.txt
101,Alice
102,Bob
103,Carol
apluser@FengYeHong-HP:0725$ cat scores2.txt
Alice,80
Bob,90
fengyehong,95
三. 指定文件的连接key
‘默认情况下使用文件的第1列进行join
apluser@FengYeHong-HP:0725$ join students1.txt scores1.txt 101 Alice 80 102 Bob 90
1 1 -2 1:指定第1个文件的第1列和第2个文件的第1列作为join的key-t, -1 2 -2 1:-t,:默认情况下使用空格作为列之间的分隔符,通过-t手动指定分隔符为逗号-1 2 -2 1:指定第1个文件的第2列和第2个文件的第1列作为join的key
apluser@FengYeHong-HP:0725$ join -1 1 -2 1 students1.txt scores1.txt 101 Alice 80 102 Bob 90 apluser@FengYeHong-HP:0725$ join -t, -1 2 -2 1 students2.txt scores2.txt Alice,101,80 Bob,102,90
四.-a输出指定文件的所有行
-a 1:输出第1个文件的所有行,相当于左连接-a 2:输出第2个文件的所有行,相当于右连接
apluser@FengYeHong-HP:0725$ join -a 1 students1.txt scores1.txt 101 Alice 80 102 Bob 90 103 Carol apluser@FengYeHong-HP:0725$ join -a 2 students1.txt scores1.txt 101 Alice 80 102 Bob 90 104 95
-a 1 -a 2:输出所有行
apluser@FengYeHong-HP:0725$ join -a 1 -a 2 students1.txt scores1.txt 101 Alice 80 102 Bob 90 103 Carol 104 95
五.-o指定输出的字段
-o 1.2 2.2 2.3:- 输出第1个文件的第2个字段
- 输出第2个文件的第2个和第3个字段
apluser@FengYeHong-HP:0725$ cat address1.txt 101 地球 火星 102 水星 金星 104 木星 土星 apluser@FengYeHong-HP:0725$ join students1.txt address1.txt 101 Alice 地球 火星 102 Bob 水星 金星 apluser@FengYeHong-HP:0725$ join -o 1.2 2.2 2.3 students1.txt address1.txtphp Alice 地球 火星 Bob 水星 金星 a编程pluser@FengYeHong-HP:0725$ join -o 1.2,2.2,2.3 students1.txt address1.txt Alice 地球 火星 Bob 水星 金星
六.-v指定输出未匹配的行
- 输出第1个和第2个文件中未匹配的内容
apluser@FengYeHong-HP:0725$ join -v 1 students1.www.chinasem.cntxt address1.txt 103 Carol apluser@FengYeHong-HP:0725$ join -v 2 students1.txt address1.txt 104 木星 土星
- 输出第1个和第2个文件中未匹配的内容
apluser@FengYeHong-HP:0725$ join -v 1 -v 2 students1.txt address1.txt 103 Carol 104 木星 土星
总结
这篇关于Linux join命令的使用及说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!