gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:24:22 26 4
gpt4 key购买 nike

如何使用 shell 单行代码和通用 GNU 工具将两个文件中的行连接起来,就像在笛卡尔积中一样?什么是最简洁、美观和“linux”的方式?

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

$ 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)))

关于shell - GNU/Linux 中两个文件(作为线集)的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1620946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com