如何使用awk将7个文件合并为1个文件每个文件包含第一列作为货币[common],第二列作为其计数

如何使用awk将7个文件合并为1个文件每个文件包含第一列作为货币[common],第二列作为其计数,awk,Awk,我有7个文件的例子如下-我刚刚从2个文件中给出了3个条目作为示例。可能有多个条目。所有7个文件都有相同的货币 file1 22 HKD 5 JPY 3 AUD file 2 23 HKD 5 JPY 2 AUD 等等。。文件3、文件4、文件5、文件6、文件7 我只想看到一个输出如下的文件- 合并文件- currency,Count_1, Count_2,Count_3,Count_4,Count_5,Count_6,Count_7 HKD,22,23,22,23,21,22,2

我有7个文件的例子如下-我刚刚从2个文件中给出了3个条目作为示例。可能有多个条目。所有7个文件都有相同的货币

file1
22 HKD
5  JPY
3  AUD

file 2
23  HKD
5   JPY
2   AUD
等等。。文件3、文件4、文件5、文件6、文件7

我只想看到一个输出如下的文件- 合并文件-

currency,Count_1, Count_2,Count_3,Count_4,Count_5,Count_6,Count_7
HKD,22,23,22,23,21,22,23
JPY,5,5,4,5,6,5,5
AUD,3,2,3,3,3,3,2
列count_1、count_2、…count_7代表所有7个文件中每种货币的第2列[输出应以逗号分隔]。我是unix/awk新手,在整理数据时非常需要您的帮助。我无法以表格[列]格式粘贴数据。请容忍我。很抱歉很抱歉,我在这里做了一些更改。

编辑:按照OP的指示,将其用逗号分隔,以便现在添加该解决方案

paste FILe[1-7] |
awk 'BEGIN{
  print "currency,Count_1,Count_2,Count_3,Count_4,Count_5,Count_6,Count_7"}
{
  printf "%s,%s,",$2,$1;
  for(i=4;i<=NF;i+=2){
    printf("%s%s",$i,i==NF?ORS:OFS)}
}' OFS=,

如果要捕获不匹配列之类的错误,您可能还会发现join命令很有用:

files=(file*)
joined=$(<${files[0]})
for f in ${files[@]:1};do joined=$(join <(echo "$joined") $f);done
echo "$joined"

欢迎来到SO,请用代码标签包装您的代码。非常感谢@RavinderSingh13!我在上述要求中犯了一个错误。我的输入文件采用以下格式,而不是我指定的格式。文件1 22 HKD 5 JPY 3 AUD,而文件2、3、4、5、6、7与文件1格式相同。输出应为,逗号分隔。例如,输出文件应读为货币、计数1、计数2、计数3……等等,每种货币的计数值应相同。@Shlshgaikwad,请用正确的详细信息更新您的帖子,并让我知道,从这篇评论中不清楚。感谢您的帮助@RavinderSingh13!我已经更新了上面的原始要求。@RavinderSingh13。。。我还纠正了一件事,那就是输入文件。Currency是所有输入文件中的第二列,count是第一列。上述代码将货币视为第一列,将计数视为第二列。要么我将不得不更改所有输入文件中的列,要么需要更改上述代码。请就如何进行提供建议。我非常感谢您。。我不知道答案是如何被删除的,谁删除了它……顺便说一句,我用| awk{print$2\t$1}在输入文件中交换了我的列,结果成功了
files=(file*)
joined=$(<${files[0]})
for f in ${files[@]:1};do joined=$(join <(echo "$joined") $f);done
echo "$joined"