2015-02-24 61 views
0

我的輸入文件:價值觀AWK失蹤

file1 
231|35000 
234|15000 
242|60000 
254|12313 
345|50000 
435|24300 

file2 
1|madhan|retl|231|tcs 
2|vaisakh|retl|234|tcs 
4|sam|ins|242|infy 
5|tina|bfs|254|tcs 
3|ram|bfs|345|infy 
6|subbu|bfs|435|infy 

輸出繼電器: 試圖讓

col1 , col2 of file1 and col2 of file2 based on common column(col1 of file1 and col4 of file2) 

我的代碼:

awk 'BEGIN { FS="|";} NR==FNR{a[$1] = $2;next} ($4 in a) {print $2 "|" $4 "|" a[$1]} ' file_1 file_2 

O/PI有:

madhan|231| 
vaisakh|234| 
sam|242| 
tina|254| 
ram|345| 
subbu|435| 

你能幫爲什麼最後關口即將空格

回答

0

試着這麼做:

join -t '|' -1 1 -2 4 file1 file2 | awk -F'|' '{print $1 "|" $2 "|" $4}' 

加入現場1從file1和現場4文件2和提取字段,你需要用awk什麼。

0

這應該做:

awk -F\| 'FNR==NR {a[$1]=$0;next} {for (i in a) if (i==$4) print a[i]"|"$2}' file1 file2 
231|35000|madhan 
234|15000|vaisakh 
242|60000|sam 
254|12313|tina 
345|50000|ram 
435|24300|subbu 

它使用第一字段作爲索引存儲在陣列afile1
然後它在file2中測試第一個文件中的第四個字段的索引。
如果它們相同,則從file1打印數據,從file2打印第二個字段。

+0

感謝Jotne。但是如果我的輸入文件有數百萬條記錄,awk的工作效率會如何? – Madan 2015-02-24 09:43:00

+0

@Madan'awk'可以工作,但你需要測試它看看需要多長時間。 – Jotne 2015-02-24 10:07:06

0

由於該鍵不存在於數組中,因此它變爲空白。您正在將file1的第一列存儲爲file2的第四列的鍵。

$ awk ' 
    BEGIN { FS=OFS="|" } 
    NR==FNR { a[$1]=$2; next } 
    ($4 in a) { print $2, $4, a[$4] } 
' file1 file2 
madhan|231|35000 
vaisakh|234|15000 
sam|242|60000 
tina|254|12313 
ram|345|50000 
subbu|435|24300 

如果您需要在您的要求Ø文陳述的次序/ P則

$ awk 'BEGIN {FS=OFS="|"}NR==FNR{a[$4]=$2;next} ($1 in a) {print $0, a[$1]}' file2 file1 
231|35000|madhan 
234|15000|vaisakh 
242|60000|sam 
254|12313|tina 
345|50000|ram 
435|24300|subbu