性能修复:加入-t,-j99 file2 file1 | awk -F,-v OFS =,'$ 3 == $ 6 && $ 4 == $ 8 {打印$ 2,$ 3,$ 4,$ 5,$ 7,$ 9}'

时间:2018-08-27 23:38:26

标签: join awk

File1

111,222,560,0.7
111,333,560,0.2
111,444,560,0.1

File2

2017,111,560,0.0537
2018,111,560,0.0296
2019,111,560,0.0624

输出:

2017,111,560,0.0537,222,0.7
2017,111,560,0.0537,333,0.2
2017,111,560,0.0537,444,0.1
2018,111,560,0.0296,222,0.7
2018,111,560,0.0296,333,0.2
2018,111,560,0.0296,444,0.1
2019,111,560,0.0624,222,0.7
2019,111,560,0.0624,333,0.2
2019,111,560,0.0624,444,0.1

对于file1我有31,000行 对于file2,我有130万行

,处理该文件将花费很长时间。 该命令在Unix中运行

有人可以帮忙吗?预先谢谢你

2 个答案:

答案 0 :(得分:0)

您可以尝试

 join -t, -1 2 -2 1 file2 file1  | awk -F, -v OFS=, '{print $2, $1, $3, $4, $5, $7}'

结果相同,但是应该更快。

答案 1 :(得分:0)

另一个awk/join

$ join -t, <(awk -F, '{print $2"_"$3 FS $0}' f2 | sort) \
           <(awk -F, '{print $1"_"$3 FS $2 FS $4}' f1 | sort) | cut -d, -f2-

2017,111,560,0.0537,222,0.7
2017,111,560,0.0537,333,0.2
2017,111,560,0.0537,444,0.1
2018,111,560,0.0296,222,0.7
2018,111,560,0.0296,333,0.2
2018,111,560,0.0296,444,0.1
2019,111,560,0.0624,222,0.7
2019,111,560,0.0624,333,0.2
2019,111,560,0.0624,444,0.1