2012-10-09 49 views
0

使用輸入我有AWK的(非常)基本的瞭解,我已經試過這樣做的幾種方法,但所有打印出更行,比我想:awk中從管道

我有10個行file.1

chr10 234567 
chr20 123456 
... 
chrX 62312 

我想要移動到大寫和匹配file.2第2列,所以下面第一行匹配第二線之上,但我不希望得到下面一個符合上面的位置,第三行第二線,但不是字符,我不希望下面的第一行匹配上面的第一行。

CHR20 123456 ... 234567 
CHR28 234567 ... 62312 

我:

$ cat file.1 | tr '[:lower:]' '[:upper:]' | <grep? awk?> 

,很想知道如何進行。我曾經使用過一個簡單的grep - 以前,但在搜索文件中匹配更多的第二列file.1,所以我得到了數百行返回。我想匹配前兩列(它們對應於file.2中的前兩列)。

希望這就是足夠清晰的你,期待你的答案=)

+0

你是什麼意思的'搜索匹配'?請根據您的標準添加符合您的樣本的線條。 – 2012-10-09 09:11:56

+0

完成,我甚至在提問有關cmd行的問題時比我使用的還要糟糕= P – bruce01

+0

我沒有得到你想要的東西......你能簡單地粘貼file1,file2和預期的輸出嗎? – Kent

回答

3

如果文件是由第一列排序,你可以這樣做:

join -i file.1 file.2 ¦ awk '$3==$2{ $3=""; print}' 

如果他們不排序,排序他們第一。

-i標誌表示忽略大小寫。

如果在第一列中有多個具有相同字段的行,則這將不起作用。爲了使這項工作,你需要更復雜的東西

+0

謝謝喬納森,那完美的工作。 – bruce01

+1

@ user1495853:如果這適用於您,您應該通過單擊此答案左側的打勾來接受它。 – Steve

+0

對不起,它確實工作,很多謝謝,新的stackoverflow;) – bruce01