2017-03-01 25 views
0

文件有以下3列: 賬戶號碼,客戶名稱,平衡加入兩個文件在AWK - 在不同的位置加入柱

文件B具有以下5列 SYSTEMID,賬戶號碼,產品,OpeningDate

我正在使用下面的AWK代碼來加入這兩個文件。它不工作

FNR==NR{a[$1]=$0;next}$2 in a{ print $0, a[$1]} 

兩個文件的組合輸出預計如下 SYSTEMID,賬戶號碼,產品,OpeningDate,客戶名稱,只在AWK代碼餘額

請求幫助。我知道類似的功能可以通過SORT和JOIN獲得,但我只在尋找AWK解決方案。

 
File A: 
+---------------+---------------+----------+ 
| AccountNumber | CustomerName | Balance | 
+---------------+---------------+----------+ 
|    3 | C    |  100 | 
|    4 | A    |  200 | 
|    5 | B    |  300 | 
+---------------+---------------+----------+ 

File B: 
+-----------+----------------+----------+--------------+ 
|  SystemID | AccountNumber | Product | OpeningDate | 
+-----------+----------------+----------+--------------+ 
|   1 |    6 | RD  | 12-05-17  | 
|   2 |    4 | SB  | 15-05-17  | 
|   3 |    3 | TD  | 02-04-17  | 
|   4 |    5 | SB  | 15-01-17  | 
+-----------+----------------+----------+--------------+ 

Output after joining: 
+-----------+----------------+----------+--------------+--------------+---------+ 
|  SystemID | AccountNumber | Product | OpeningDate | CustomerName | Balance | 
+-----------+----------------+----------+--------------+--------------+---------+ 
|   2 |    4 | SB  | 15-05-17  | A   |  200 | 
|   3 |    3 | TD  | 02-04-17  | C   |  100 | 
|   4 |    5 | SB  | 15-01-17  | B   |  300 | 
+-----------+----------------+----------+--------------+--------------+---------+ 

+0

請張貼樣本輸入。同樣在'print $ 0,a [$ 1]'這裏索引應該是'$ 2'? – nu11p01n73R

+0

更新了樣本輸入。 – user1955215

+0

@ user1955215:你爲什麼要爲此使用'awk'?該文件是否帶有'|','-----------'和'+'符號?你想awk去限制這些角色?在awk中以這種方式格式化輸出並不是直截了當 – Inian

回答

1

如果你能刪除管,加號和 - 以下符號是解決方案 -

cat file1 
1 6 RD 12-05-17 
2 4 SB 15-05-17 
3 3 TD 02-04-17 
4 5 SB 15-01-17 

cat file2 
3 C 100 
4 A 200 
5 B 300 

awk 'NR==FNR{a[$1]=$2FS$3;next} $2 in a {print $0, a[$2]}' file2 file1 
2 4 SB 15-05-17 A 200 
3 3 TD 02-04-17 C 100 
4 5 SB 15-01-17 B 300 
+0

'^ 1'很好的介紹vipin,很高興看到你也在學習和幫助他人 –