0

我有两个文件,每个文件有两列

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 脚本的新手。请帮助我。我非常需要。

4

1 回答 1

5

(编辑以使其更简洁。将方向从脚本移动到命令行,以便您可以更好地控制想要输出的位置)

根据您只想打印 file1 中的前两列的描述,并且只有第一列值与第二个文件中的相应行不同的行(并假设第一个文件的行数比第二个文件多):

#!/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
于 2012-10-16T17:02:19.887 回答