情况是:
file_1
7010-1
7010-2
7010-3
file_2
7010,xxx,yyy,7123,01
7010,xxx,yyy,7122,02
7010,xxx,yyy,9101,03
7010,xxx,yyy,7123,01
7010,xxx,yyy,7122,02
7010,xxx,yyy,9101,03
7010,xxx,yyy,7123,01
7010,xxx,yyy,7122,02
7010,xxx,yyy,9101,03
7010,xxx,yyy,7119,04
7010,xxx,yyy,7117,05
7010,xxx,yyy,7112,06
所需的输出
7010-1,xxx,yyy,7123,01
7010-1,xxx,yyy,7122,02
7010-1,xxx,yyy,9101,03
7010-2,xxx,yyy,7123,01
7010-2,xxx,yyy,7122,02
7010-2,xxx,yyy,9101,03
7010-3,xxx,yyy,7123,01
7010-3,xxx,yyy,7122,02
7010-3,xxx,yyy,9101,03
7010-3,xxx,yyy,7119,04
7010-3,xxx,yyy,7117,05
7010-3,xxx,yyy,7112,06
我不希望join
成为正确的选项,因为我不希望行被预先排序(由于第2,3,4和5列),那是对的吗?宁愿选择awk
,例如awk 'NR==FNR {h[$1] = $0; next} {print $1,$2,$3,$4,h[$1]}' file_1 file_2
。但缺少一些东西。也欢迎替代解决方案。
答案 0 :(得分:2)
awk 'BEGIN { FS=","; OFS="," }
{ if (!n || $5 < n) { getline id < "file_1" }
$1=id; print; n=$5 }' file_2