0030. shell命令--join

目录

30. shell命令--join

功能说明

语法格式

实践操作

注意事项


30. shell命令--join

功能说明

        join 是 Linux 中的一个命令行工具,用于基于指定的字段(默认是第一个字段)将两个文件的行合并在一起。它主要处理文本文件,特别是那些由字段分隔符(如空格、制表符或逗号)分隔的字段。

        join 的连接操作简言之就是将两个具有相同域的纪录给挑选出来,再将这些纪录所有的域放到一行。

        join命令 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

        注意:join 在对两个文件进行连接时,两个文件必须都是按照连接域排好序的,按其他域排序是无效的。

语法格式

SYNOPSIS
       join [OPTION]... FILE1 FILE2

选项说明

-a<1或2(FILENUM)>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行;
-e<字符串(EMPTY)>:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
-i或--ignore-case:比较栏位内容时,忽略大小写的差异;
-o<格式(FORMAT)>:按照指定的格式来显示结果例如,-o 1.1,2.2 会输出文件1的第一个字段和文件2的第二个字段;
-t<字符(CHAR))>:使用栏位的分割字符;默认为空格。
-v<1或2(FILENUM)>:跟-a相同,但是只显示文件中没有相同栏位的行;
-1<栏位(FIELD)>:连接[文件1]指定的栏位。指定从file1中比较哪个字段。默认是第一个字段;
-2<栏位(FIELD)>:连接[文件2]指定的栏位。指定从file2中比较哪个字段。默认是第一个字段;
-w WIDTH:指定比较字段的字符宽度。
--nocheck-order:不检查输入文件是否已排序。默认情况下,join 假定输入文件已按合并键排序。

实践操作

0. 环境准备
mkdir -p /test/join
cd /test/join

cat >file1.txt <<eof
A 2.0:f1.1:f1.test:1.a
B 2.0:f1.2:f1.join:1.b
C 2.0:f1.3:f1.join:1.c
D 2.0:f1.4:f1.test:1.d
E 2.1:f1.5:f1.test:1.e
eof

cat >file2.txt <<eof
A 2.0:f2.1
B 2.0:f2.2
C 2.0:f2.3
D 2.0:f2.4
E 2.2:f2.5
eof

head -v file*

1. 默认合并
join file1.txt file2.txtb    #默认基于第一个字段合并

2.指定字段分隔符
join -t: file1.txt file2.txt

3. 输出特定字段
join -o 1.2 2.2 file1.txt file2.txt

4. -a1显示第一个文件中没有共同域的纪录,-a2则显示第二个
join -t: -a1 file1.txt file2.txt
join -t: -a2 file1.txt file2.txt

5. 设置指定格式的域来显示出来
join -t: -o 1.1 1.3 2.2 file1.txt file2.txt

6. 处理未找到匹配的行
#有时,我们可能希望看到在合并过程中未找到匹配的行。
#join 命令的 -a 和 -v 选项允许我们处理这些情况。
join -a 1 -a 2 file1.txt file2.txt
join file1.txt file2.txt

注意事项

  • join 命令假定输入文件已按合并键排序。如果文件未排序,结果可能是不正确的。
  • 如果使用 -a 或 -v 选项,并且两个文件都没有排序,那么结果将是不确定的。
  • 如果要合并的字段包含分隔符,可能需要使用其他工具(如 awk 或 sed)进行预处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MineGi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值