如何使用bash组合两个文本文件

A12*_*277 4 bash

我有两个文本文件,我希望在bash中组合,以便一个文件中的每一行与另一个文件中的每个文件组合.

FILE1.TXT

abc123
def346
ghj098
Run Code Online (Sandbox Code Playgroud)

FILE2.TXT

PSYC1001
PSYC1002
PSYC1003
Run Code Online (Sandbox Code Playgroud)

我希望将它们组合起来,以便将第1行file1添加到每一行file2,并|在它们之间使用管道去限制器.

例如

PSYC1001|abc123
PSYC1002|abc123
PSYC1003|abc123
Run Code Online (Sandbox Code Playgroud)

然后对于file1中的其他行也一样,所以我最终会得到

PSYC1001|abc123
PSYC1002|abc123
PSYC1003|abc123
PSYC1001|def346
PSYC1002|def346
PSYC1003|def346
PSYC1001|ghj098
PSYC1002|ghj098
PSYC1003|ghj098<
Run Code Online (Sandbox Code Playgroud)

我一直在bash通过复制本网站的示例来做类似的简单文本,但我没有找到一个可以做到这一点的例子.很想听听你的建议.我知道它一定很简单,但我还没有解决.

Rom*_*est 5

最短的一个 - join命令:

join -j2 -t'|' -o2.1,1.1 file1 file2
Run Code Online (Sandbox Code Playgroud)
  • -t'|' - 输入/输出字段分隔符
  • -o FORMAT- FORMAT是一个或多个逗号或空白分隔的规范,每个是FILENUM.FIELD0

输出:

PSYC1001|abc123
PSYC1002|abc123
PSYC1003|abc123
PSYC1001|def346
PSYC1002|def346
PSYC1003|def346
PSYC1001|ghj098
PSYC1002|ghj098
PSYC1003|ghj098
Run Code Online (Sandbox Code Playgroud)