2017-08-16 67 views
-2

我想比較兩個文件file1.txt和file2.txt的前兩列,如果他們匹配寫入另一個文件output.txt與文件1,文件2的第三列以及是否匹配的詳細信息。比較兩個文件的兩列,並顯示第三列的輸入,如果它匹配不在unix

FILE1.TXT

ab|2001|name1 
cd|2000|name2 
ef|2002|name3 
gh|2003|name4 

FILE2.TXT

xy|2001|name5 
cd|2000|name6 
ef|2002|name7 
gh|2003|name8 

output.txt的

name1 name5 does not match 
name2 name6 matches 
name3 name7 matches 
name4 name8 matches 
+0

你到目前爲止試過了什麼?你看過'awk'嗎? – lurker

+0

是的,但我無法打印出第一個文件的第三列 – CSP

+0

然後請具體說明您的嘗試。 – lurker

回答

0

歡迎來到堆棧溢出,你可以請嘗試下面,讓我知道這是否有助於你。

awk -F"|" 'FNR==NR{a[$2]=$1;b[$2]=$3;next} ($2 in a) && ($1==a[$2]){print b[$2],$3,"matched properly.";next} {print b[$2],$3,"Does NOT matched."}' file1.txt file2.txt 

編輯:添加的解非班輪一個形式太在這裏。

awk -F"|" ' 
FNR==NR{ 
    a[$2]=$1; 
    b[$2]=$3; 
    next 
} 
($2 in a) && ($1==a[$2]){ 
    print b[$2],$3,"matched properly."; 
    next 
} 
{ 
    print b[$2],$3,"Does NOT matched." 
} 
' file1.txt file2.txt 
0

您可以使用粘貼和awk得到你想要的東西。

下面的解決方案假設file1和file2中的字段將始終由「|」分隔

paste -d "|" file1.txt file2.txt | awk -F "|" '{ if($1 == $4 && $2 == $5){print $3, $6, "matches"} else {print $3, $6, "does not match"} }' > output.txt 
相關問題