Linux

Linux第一個文件中的一行在第二個文件中合併為多行,轉置非規範化

  • November 17, 2020

文件_1

Group   Country Lang
IT      USA     ENG

文件_2

EMPID   STOREID
1001    1400
1002    1401
1003    1401

如果我使用

paste -d'\t' File_1 File_2

我明白了

Group^ICountry^ILang^IEMPID^ISTOREID$
IT^IUSA^IENG^I1001^I1400$
^I1002^I1401$   
^I1003^I1401$

當我試圖得到這樣的東西時

Group   Country Lang    EMPID   STOREID
IT  USA ENG     1001    1400
IT  USA ENG     1002    1401
IT  USA ENG     1003    1401

請建議

$ awk -v OFS='\t' 'NR==FNR{a[FNR==1]=$0; next} {print a[FNR==1], $0}' file1 file2
Group   Country Lang    EMPID   STOREID
IT      USA     ENG     1001    1400
IT      USA     ENG     1002    1401
IT      USA     ENG     1003    1401

以上只是使用比較的 1 或 0 結果“這是文件的第一行”(FNR==1)來索引數組,因此當它是第一行時,您可以從文件 1 中獲取與第一行關聯的索引 1文件 2 和與文件 1 中的第二行相關聯的索引 0 對於文件 2 的每隔一行。它在任何 awk 中的行為方式都相同。

引用自:https://unix.stackexchange.com/questions/619956