我有三个文件,如下图:
FILE 1:
DATE PGTO_CRED
20180801 50.00
20180802 150.00
20180803 130.00
20180804 110.00
20180805 200.00
FILE 2:
DATE PGTO_TOTAL
20180801 150.00
20180802 300.00
20180803 200.00
20180804 250.00
20180805 400.00
FILE 3:
DATE PGTO_FEE
20180801 35.00
20180802 10.00
20180803 25.00
20180804 140.00
20180805 135.00
我需要我的输出文件是这样的:
DATE PGTO_CRED PGTO_TOTAL PGTO_FEE
20180801 50.00 150.00 35.00
20180802 150.00 300.00 10.00
20180803 130.00 200.00 25.00
20180804 110.00 250.00 140.00
20180805 200.00 400.00 135.00
如何在 Redhat Linux 上执行此操作?
答案1
许多工具都可以做到这一点,可能awk
是第一个想到的,但我推荐该join
命令,特别是如果输入已经排序(如您的示例中所示):
join file1 <(join file2 file3) | column -t
这column -t
只是为了很好地对齐输出,您可以将其删除。
输出:
DATE PGTO_CRED PGTO_TOTAL PGTO_FEE
20180801 50.00 150.00 35.00
20180802 150.00 300.00 10.00
20180803 130.00 200.00 25.00
20180804 110.00 250.00 140.00
20180805 200.00 400.00 135.00
答案2
其他几个选项:
paste file{1,2,3} | awk '{print $1,$2,$4,$6}' | column -t
或者只是 awk:
awk '
NR == FNR {line[FNR] = $0; next}
{line[FNR] = line[FNR] OFS $2}
END {for (i=1; i<=FNR; i++) print line[i]}
' file{1,2,3} | column -t