我希望通过使用 AWK 从多个文件中获取值来构建 csv 表。我让它处理两个文件,但我无法扩展它。我目前正在获取第二个文件的输出,并附加第三个文件,依此类推。
以下是示例文件:
#file1 #file2 #file3 #file4
100 45 1 5
200 23 1 2
300 29 2 1
400 0 1 2
500 74 4 5
这就是目标:
#data.csv
1,100,45,1,5
2,200,23,1,2
3,300,29,2,1
4,400,0,1,2
5,500,74,4,5
这就是我正在做的工作:
awk 'FNR==NR { a[FNR""] = NR", " $0","; next } { print a[FNR""], $0}' $file1 $file2
结果是:
1, 100, 45
2, 200, 23
3, 300, 29
4, 400, 0
5, 500, 74
但是当我尝试让它处理 3 个或更多文件时,如下所示:
awk 'FNR==NR { a[FNR""] = NR", " $0","; next } { print a[FNR""], $0; next } { print a[FNR""], $0}' $file1 $file2 $file3
我得到这个输出:
1, 100, 45
2, 200, 23
3, 300, 29
4, 400, 0
5, 500, 74
1, 100, 1
2, 200, 1
3, 300, 2
4, 400, 1
5, 500, 4
在第一列中,行计数重新开始,第二列也重复第一个文件。在第三列中,它将第三个及后续文件添加为新行,我希望这些文件应添加为列。不需要新行。
任何帮助将不胜感激。我从 Stack Exchange 学到了大部分 AWK,并且我知道我在这里遗漏了一些基本知识。谢谢,