结合两个不同长度的文件合并成一个文件
的情况是:结合两个不同长度的文件合并成一个文件
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
。但缺少一些东西。替代解决方案也受到欢迎。
awk 'BEGIN { FS=","; OFS="," }
{ if (!n || $5 < n) { getline id < "file_1" }
$1=id; print; n=$5 }' file_2
'n'是前5列的值。 'id'是来自'file_1'的行。 –
谢谢。那么这两个管子在做什么? – Eocene
https://www.gnu.org/software/gawk/manual/html_node/Boolean-Ops.html –
组合的规则是什么? –
我会说第一和最后一列。从file_2最后一列的顶部开始,当它重新从1开始计数时,我们移动到file_1的下一行。 – Eocene