在 Linux 中,管理和操作文本文件是一项常见任务。两个强大的实用工具是 join 和 split。join 命令根据共同的字段合并两个文件的行,而 split 将大文件分解成更小、更易于管理的部分。
按共同字段连接文件
当你需要 linux join files 时,join 命令是一个基本工具。默认情况下,它根据第一个相同的字段合并两个已排序文件的行。
例如,想象你有两个想要合并的文件:
file1.txt
1 John
2 Jane
3 Mary
file2.txt
1 Doe
2 Doe
3 Sue
使用 join 命令,你可以轻松地将它们组合起来:
$ join file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
正如你所见,文件是根据第一个共同字段(1、2、3)连接起来的。为了让 join 正确工作,两个文件中的连接字段必须是已排序的。
指定不同的连接字段
如果共同字段不是第一列怎么办?你可以告诉 join 使用哪些字段。考虑以下文件:
file1.txt
John 1
Jane 2
Mary 3
file2.txt
1 Doe
2 Doe
3 Sue
在这里,我们需要根据 file1.txt 的第二个字段和 file2.txt 的第一个字段进行连接。命令将是:
$ join -1 2 -2 1 file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue
-1 2 标志指定第一个文件的第 2 个字段,-2 1 标志指定第二个文件的第 1 个字段。
分割大文件
split 命令与连接相反;它将大文件分成更小的文件。
split somefile
默认情况下,此命令在达到 1000 行限制时将 somefile 分割成新文件。输出文件命名为 xaa、xab,依此类推。你可以通过使用 -l 标志指定不同的行数或使用 -b 标志按文件大小分割来定制此行为。