2017-03-09 61 views
-2

我有兩個文件。嗨。我是一個新的UNIX腳本,可以有人幫助我在下面

文件1--這是SQL生成文件|分隔符

sabari|27|22-12-1990|CHENNAI| 
Siva|29|13-11-1989|CHENNAI| 

文件2 - 我已經創建了硬核文件

Sabari|-|-|-|-| 

Siva|-|-|-|-| 

Ravi|-|-|-|-| 

Bali|-|-|-|-| 

我想比較,如果沒有在F1中的值從文件-2將文件-1的值。

期望輸出把

sabari|27|22-12-1990|CHENNAI| 

Siva|29|13-11-1989|CHENNAI| 

Ravi|-|-|-|-| 

Bali|-|-|-|-| 

有人能幫我嗎/

+1

請爲此問題選擇一個更合適的標題。 – Cyrus

回答

0

我會做:

awk '{k=tolower($1)}NR==FNR{a[k]=$0;next} k in a{$0=a[k]}1' FS=\| file1 file2 

做一個傳過來的第一個文件,存儲一切都在內存散列的第一項。然後通過第二個文件,檢查該行是否在第一個文件中給出,並在該文件被打印出來時打印該行。 「tolower」只是比較不區分大小寫。

也許是更清晰的寫爲:

awk '{k=tolower($1)}NR==FNR{a[k]=$0;next}{print k in a ? a[k] : $0}' FS=\| file1 file2 

的NR == FNR技術是從第一個輸入文件預加載數據的常用方法。

+0

[sabarinathan] awk'{k = tolower($ 1)} NR == FNR {a [k] = $ 0; next} {print k in a? a [k]:$ 0}'FS = \ | MF_STATUS.txt JOBNULL.txt awk:第1行附近的語法錯誤 awk:第1行附近的非法聲明 – sabarinahtan

相關問題