Linux命令:join

Linux命令:join

连接:菜鸟教程-join介绍

join命令用于将两个文件的共同字段进行匹配,并将它们合并为一行输出。

语法
join [选项]... 文件1 文件2
参数
  • -a FILENUM:打印未匹配到的行,其中FILENUM表示文件编号(1或2)。
  • -o 格式 : 按照指定格式构造输出行
  • -e EMPTY:指定未匹配到的字段的占位符。
  • -i:忽略大小写进行匹配。
  • -t CHAR:指定字段分隔符。
  • -v FILENUM:仅打印未匹配到的行,其中FILENUM表示文件编号(1或2)。
  • -1 FIELD:指定文件1中用于匹配的字段。
  • -2 FIELD:指定文件2中用于匹配的字段。
实例

假设我们有两个文件,一个是包含学生信息的文件students.txt,另一个是包含成绩信息的文件scores.txt

students.txt

cat >students.txt<<EOF
ID,Name
1,John
2,Lisa
3,David
4,Sarah
EOF

scores.txt

cat >scores.txt<<EOF
ID,Score
2,85
3,92
4,78
5,88
EOF

现在我们想要将这两个文件根据学生的ID进行匹配,输出学生的姓名和成绩。

命令如下:

join -t ',' -1 1 -2 1 students.txt scores.txt
或者
join -t ','  students.txt scores.txt

结果如下:

ID,Name,Score
2,Lisa,85
3,David,92
4,Sarah,78

解释:

  • -t ',':指定字段分隔符为逗号。
  • -1 1:指定文件1中的第1个字段进行匹配。
  • -2 1:指定文件2中的第1个字段进行匹配。

上面相当于内连接(忽略不匹配的行):不指定任何参数的情况下使用join命令,就相当于数据库中的内连接,关键字不匹配的行不会输出。

左连接(又称左外连接,显示左边所有记录)

join -t ',' -a1 students.txt scores.txt

ID,Name,Score
1,John
2,Lisa,85
3,David,92
4,Sarah,78

显示左边文件中的所有记录,右边文件中没有匹配的显示空白。

右连接(又称右外连接,显示右边所有记录)

join -t ',' -a2 students.txt scores.txt

ID,Name,Score
2,Lisa,85
3,David,92
4,Sarah,78
5,88

显示右边文件中的所有记录,左边文件中没有匹配的显示空白。

全连接(又称全外连接,显示左边和右边所有记录)

join -t ',' -a1 -a2 students.txt scores.txt

ID,Name,Score
1,John
2,Lisa,85
3,David,92
4,Sarah,78
5,88

使用-o选项指定输出的字段顺序:

join -t ',' -o 2.1,2.2,1.2 -1 1 -2 1 students.txt scores.txt

输出:

ID,Score,Name
2,85,Lisa
3,92,David
4,78,Sarah

使用-e选项指定未匹配到的字段的占位符:

join -t ',' -o 1.1,1.2,2.2  -e 'NULL' -a1 -a2 students.txt scores.txt

输出:

ID,Name,Score
1,John,NULL
2,Lisa,85
3,David,92
4,Sarah,78
NULL,NULL,88

使用-v选项仅打印未匹配到的行:

join -t ',' -v1 -v2 students.txt scores.txt

输出:

1,John
5,88
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多练项目

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值