2012-10-16 75 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