【发布时间】:2022-01-14 09:16:53
【问题描述】:
我有多个文件(其中近 1000 个)用空格分隔,我需要仅使用第二列在每个文件之间使用连接函数计算排列。重要的是不能重复比较,这就是排列的原因。
例如,一个有 3 个文件 A.txt B.txt 和 C.txt
的小例子总体思路是得到A B比较,A C和B C。 既不是 B A 也不是 C A 也不是 C B
101 代码是
join -1 2 -2 2 A.txt B.txt | cut -d ' ' -f1 > AB.txt
join -1 2 -2 2 A.txt C.txt | cut -d ' ' -f1 > AC.txt
join -1 2 -2 2 B.txt C.txt | cut -d ' ' -f1 > BC.txt
有没有办法为数千个文件完成此操作?我尝试使用 for 循环,但我的大脑已经烤焦了,现在我正在尝试使用 while 循环。但我最好先了解一下方向。
【问题讨论】:
-
考虑使用您尝试过的
for和while循环代码更新问题;这可能会让我们更好地了解您想要完成的工作 -
所以,你想将第一个文件与所有其他文件进行比较,然后将第二个文件与所有其他文件进行比较,除了第一个文件,然后......这很容易实现,但你知道有多少对它会产生吗?如果您有 1000 个文件,这将是 999 + 998 + ... + 1,即 999000 / 2 = 499500。确定这是您想要的吗?
-
如果你有
A,B,C,D,结果应该是什么?您是在寻找集合中的独特对,还是其他?
标签: bash for-loop while-loop comparison