我一般是 Unix 新手,开始学习 shell 脚本。我正在使用具有以下示例行的 CSV 文件(这是一个大型 CSV 文件,每个项目有 4 个条目):
Table 1
Item ID Time Available Location
0001 02/02/2021 08:00 Y NJ
0001 02/02/2021 09:00 N UT
0001 02/02/2021 10:00 Y AZ
0001 02/02/2021 11:00 Y CA
0002 02/02/2021 08:00 Y NJ
0002 02/02/2021 09:00 N UT
0002 02/02/2021 10:00 Y AZ
0002 02/02/2021 11:00 Y CA
我有另一个带有一堆项目 ID 的 CSV,如下所示:
Table 2
Item ID Item_Name Item_Aux_ID Item_Aux_name
1001 IT_1 3323 IT_Aux_1
1002 IT_2 3325 IT_Aux_2
1003 IT_3 3328 IT_Aux_3
1010 IT_4 3333 IT_Aux_4
我想在第一个 CSV 文件中创建新条目(第二个 CSV 文件中的每个项目一个条目)。每个新条目应与 Table1 的第一行相同,并适当替换了 Item ID。预期的输出将是:
Table 1
Item ID Time Available Location
0001 02/02/2021 08:00 Y NJ
0001 02/02/2021 09:00 N UT
0001 02/02/2021 10:00 Y AZ
0001 02/02/2021 11:00 Y CA
0002 02/02/2021 08:00 Y NJ
0002 02/02/2021 09:00 N UT
0002 02/02/2021 10:00 Y AZ
0002 02/02/2021 11:00 Y CA
1001 02/02/2021 08:00 Y NJ
1002 02/02/2021 08:00 Y NJ
1003 02/02/2021 08:00 Y NJ
1010 02/02/2021 08:00 Y NJ
如何在 Unix 中编写脚本来实现上述功能?提前致谢。
尝试这个; 阅读逻辑评论
我强烈建议您尽可能使用支持 CSV 的工具来处理 CSV 文件。该 awk 脚本适用于非常简单(“普通”)的 CSV,但如果您的 CSV 曾经有引号,那么在 awk 中进行解析就会出现问题。
GoCSV就是这样一个支持 CSV 的工具,它具有许多命令,可以让您对数据进行大量控制,而无需编写命令式代码。您将所需内容声明为一系列步骤(可以流水线化):
我模拟了您的示例数据:
表格1
表2
当我在这两个文件上运行该脚本时,我得到了final.csv: