与笛卡尔积一样,如何使用 shell 一线和通用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)))
关于linux - GNU/Linux中两个文件(作为行集)的笛卡尔积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1620946/