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中运行
有人可以帮忙吗?预先谢谢你
答案 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