2012-10-16 105 views
0

我有兩個文件,找到兩個文件的差異,並且每個文件有兩列需要Shell腳本基於第一列

File1其列如下:具有列如下

ECDLT 5 
DBG0 0 
AHDST 53 
RSNDL 10 
DBLOG 2 
ATDLM 1 
ATREJ 1 
DLMKT 0 
AKDRP -100 
ALTCM 100000000  
BCPTM -1000000000 
PERFS 1 
OMSTD 1 
LDTHD 1 
DGCAN 1 
HRLOG 1 
AKALT 0 

File2

ECDLT 5 
DBG0 0 
MFLOR 1 
LIPEM 1 
GXTHR 5 
LIPEM 1 
LIPEM 1 
RPTAT -1 
RPTPA -1 
PTIMR 1 
NOQUE 1 
AHDST 53 
RSNDL 10 
DBLOG 2 

因此,在這裏我需要一個shell腳本來查找使用第一列的兩個文件中的差異,並在輸出中顯示兩列。

我是shell腳本編程新手。請幫助我。我非常需要。

+0

我不知道你在問什麼,你可以提供更多的細節在你想要的輸出看起來像,還是舉例輸出? –

+0

如果您觀察每個文件中的第一列,則少數行具有不同的值。因此,我需要兩個文件的差異值(應僅比較僅使用第一列的文件) – user1750671

回答

5

(編輯以使其更簡潔。從劇本移動方向的命令行所以你有你想要的輸出更多的控制),在此基礎上,你只想打印前兩列描述

從文件1,和僅在第1列的值是針對在第二文件中的相應的行不同的行(並假設第一文件具有比所述第二文件的更多行):

#!/bin/bash 

paste $1 $2 | awk '{if ($1 != $3) {print $1 " " $2}}' 

,這是它如何使用腳本(將其命名爲diff_col.sh):

$ chmod +x diff_col.sh 
$ ./diff_col.sh input_file1 input_file2 > output_file 

與樣品輸入,只是

$ ./diff_col.sh input_file1 input_file2 

我得到:

AHDST 53 
RSNDL 10 
DBLOG 2 
ATDLM 1 
ATREJ 1 
DLMKT 0 
AKDRP -100 
ALTCM 100000000 
BCPTM -1000000000 
PERFS 1 
OMSTD 1 
LDTHD 1 
DGCAN 1 
HRLOG 1 
AKALT 0 
+0

是的..我正在查找像這樣的輸出.. 但我很困惑..我們在哪裏做差異和如何? – user1750671

+0

你不需要差異。比較是在awk腳本內部完成的(http://www.grymoire.com/Unix/Awk.html) –

+0

好的..我明白了..但它打印這兩個文件的前兩列..(我需要它應該打印文件的前兩列 – user1750671