2014-04-08 43 views
0
 
File 1 
---------+ 
|ID | 
+---------+ 
|  15 | 
|  45 | 
|  18 | 
|  76 | 
|  29 | 
|  10 | 
|  40 | 
+---------+ 
File 2: 

| ID Name | 
+---------+ 
| 12 abc | 
| 18 nop | 
| 15 ujh | 
| 30 jkl | 
| 15 lmn | 
| 18 tre | 
| 19 hgt | 
+---------+ 

Desired output: 
+---------+ 
| ID Name | 
+---------+ 
| 18 nop | 
| 15 ujh | 
| 15 lmn | 
| 18 tre | 
+--------- 

的加入cammand下面沒有得到所要的結果兩個文件(它應該返回在第一列中的值在文件1表中存在文件2中的所有行。加入用awk

加入-1 1 -2 1 FILE1.TXT FILE2.TXT

請幫

+0

你是否先排序文件?或者使用'join -1 1 -2 1 <(sort file1.txt)<(sort file2.txt)'?祝你好運。 – shellter

+0

我認爲你並不期待'join'與你的數據中的所有SQL ASCII藝術一起工作? –

+0

如果你正在使用mysql,試試'mysql -B -N -e「從某處選擇xyz」' –

回答

1

好吧,既然你對一個awk解決方案,專門問了,這裏有一個方法:

#!/bin/sh 

awk 'BEGIN { 
    while ((getline line < "File1.txt") > 0) { 
     split(line, a) 
     for (fld in a) { 
      if (a[fld] ~ /^[0-9]*$/) { 
       targets[a[fld]]=a[fld] 
      } 
     } 
    } 
} { 
    if (NF == 4 && $2 ~ /^[0-9]*$/) { 
     if ($2 in targets) { 
      print $0 
     } 
    } else { 
     print $0 
    } 
}' File2.txt 

雖然,我不知道@Mark Setchell爲什麼你不會從數據庫獲取這個輸出,如果你有權訪問它。