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

性能修复:join-t,-j99 file2 file1 | awk-F,-v OFS=,'$3==$6&&$4==$8{打印$2、$3、$4、$5、$7、$9}';,join,awk,Join,Awk,文件1 文件2 输出: 2017,111,560,0.0537 2018,111,560,0.0296 2019,111,560,0.0624 对于文件1,我有31000行 对于文件2,我有130万行 处理文件需要很长时间。 此命令正在unix中运行 有人能帮忙吗?提前谢谢你你可以试试这个 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

文件1

文件2

输出:

2017,111,560,0.0537
2018,111,560,0.0296
2019,111,560,0.0624
对于文件1,我有31000行 对于文件2,我有130万行

处理文件需要很长时间。 此命令正在unix中运行

有人能帮忙吗?提前谢谢你

你可以试试这个

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

结果是一样的,但应该更快。

另一个
awk/join

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

$join-t,带GNU join:
join-t,-12-21 file2 file1-o 1.1,1.2,2.3,1.4,2.2,2.4
表示文件1中的第2列和文件2中的第1列将确定联接
 join -t, -1 2 -2 1 file2 file1  | awk -F, -v OFS=, '{print $2, $1, $3, $4, $5, $7}'
$ 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