0

2つのファイルがあり、各ファイルには2つの列があります

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  

したがって、ここでは、最初の列を使用して2つのファイルの違いを見つけるためのシェルスクリプトが必要であり、出力では両方の列を出力する必要があります。

シェルスクリプトは初めてです。これで私を助けてください。私は非常に困っています。

4

1 に答える 1

5

(これをより簡潔にするために編集しました。スクリプトからコマンドラインに方向を移動して、出力先をより細かく制御できるようにします)

file1 の最初の 2 列のみを印刷し、1 列目の値が 2 番目のファイルの対応する行と異なる行のみを印刷するという説明に基づいて (最初のファイルには 2 番目のファイルよりも多くの行があると仮定します):

#!/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 に答える