linux - Bash 加入命令

标签 linux bash unix join

Infile1:

1 a
3 c
4 d
6 f

文件 2:

1 a 
2 b
5 e
6 f
7 g
8 h

如何使用 unix 连接命令连接这些文件以获得此输出:

1 aa
2 b
3 c
4 d
5 e
6 ff
7 g 
8 h

Dogbanes 的回答奏效了,但是...... 当我在此文件上应用 dogbanes 答案时:

27  27
28  22
29  37
30  15
31  21
32  13
33  18
34  24

还有这个:

27  7
28  13
29  6
30  12
31  30
32  5
33  10
34  28

他们不加入:

27  27
27  7
28  13
28  22
29  37
29  6
30  12
30  15
31  21
31  30
32  13
32  5
33  10
33  18
34  24
34  28

第二种情况是制表符分隔,所以我使用了-t\t

最佳答案

首先排序 两个文件。然后使用 join 加入两个文件的第一个字段。如果您想要删除空格并将 a a 转换为 aa,您还需要通过 sed 传输输出。如下所示:

$ join -t " " -1 1 -2 1 -a 1 -a 2  <(sort file1) <(sort file2) | sed 's/ \([a-z]\) / \1/g'
1 aa
2 b
3 c
4 d
5 e
6 ff
7 g
8 h

关于linux - Bash 加入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849681/

相关文章:

python - 使用 python 在 Linux 中合并文件时文件大小大大减少

bash - 使用带有 "${parameter:-word}"参数扩展的引号

python-3.x - 如何用scrapy保存图片

java - 在 Java 或 Unix shell 中收集 Unix 机器统计信息

linux - 重命名批量文件并更改某些前缀并保存它们

linux - 使用 sed 提取子表达式

r - 寻找适用于 CentOS Linux 的 R 4.0.3 编译版本

linux - 1 用于获取服务器 IP 地址 (ifconfig) 并将主机名附加到/etc/hosts 以匹配 ipaddress 的内联脚本

c++ - 套接字的 pty 功能

c - 使用 Grep 查找 C 文件的变量