GNU / Linux中两个文件(作为行集)的笛卡尔积

与笛卡尔积一样,如何使用外壳一线和通用GNU工具将两个文件中的行连接起来?什么是最简洁,美观和“ linuxy”的方式?

例如,如果我有两个文件:

$ cat file1

a

b

$ cat file2

c

d

e

结果应该是

a, c

a, d

a, e

b, c

b, d

b, e

回答:

这是shell脚本

while read a; do while read b; do echo "$a, $b"; done < file2; done < file1

虽然那会很慢。我想不出任何预编译的逻辑来完成此任务。速度的下一步将是在awk / perl中执行上述操作。

awk 'NR==FNR { a[$0]; next } { for (i in a) print i",", $0 }' file1 file2

嗯,这个使用预编译逻辑的hacky解决方案怎么样?

paste -d, <(sed -n "$(yes 'p;' | head -n $(wc -l < file2))" file1) \

<(cat $(yes 'file2' | head -n $(wc -l < file1)))

以上是 GNU / Linux中两个文件(作为行集)的笛卡尔积 的全部内容, 来源链接: utcz.com/qa/417830.html

回到顶部