Shell
如何在 CSV 文件中追加新行並在 Unix 中修改它們
我一般是 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 中編寫腳本來實現上述功能?提前致謝。
嘗試這個; 閱讀邏輯評論
awk ' NR==2 {SV = $0 # save the relevant info from file1 RG = $1 } NR != FNR {if (FNR==1) next # in new file: skip header sub(RG, $1, SV) # insert new "item ID" in saved line RG = $1 # save new search pattern sub($0, SV) # replace input line with modified saved line } 1 # print it ' file[12] 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