2つのファイルを区別し、3番目のファイルから一意の出力を取得します。

2つのファイルを区別し、3番目のファイルから一意の出力を取得します。

私はシェルスクリプトに初めて触れ、現在学んでいます。

2つのファイルがあります。

ファイル1:

1   StartInstall, CDM_2.5B263, OK       
2   EndInstall, CDM_2.5B263, SUCCESS    
3   StartPatch, CDM_2.5.0.2B1, OK       
4   StartPatch, CDM_2.5.0.3B1, OK       
5   EndPatch, CDM_2.5.0.3B1, SUCCESS 

ファイル2:

1   StartInstall, CDM_2.5B263, OK       
2   EndInstall, CDM_2.5B263, SUCCESS    
4   StartPatch, CDM_2.5.0.3B1, OK       
5   EndPatch, CDM_2.5.0.3B1, SUCCESS    

ファイル1とファイル2の違いを見つける必要があります。行が欠落している場合、シェルスクリプトは欠落している行を表示し、それを別のテキストファイル(たとえばresult.txt)に書き込む必要があります。シェルスクリプトは、欠落している行がどちらの行の間にあるかを表示する必要があります。

Error.txt たとえば、出力はLine Missingと同じでなければなりません。

3   StartPatch, CDM_2.5.0.2B1, OK

2~4

ベストアンサー1

commファイルがソートされているので、を使用してください。

comm -3 file1 file2 > result.txt

出力には存在するfile1が存在しない行file2と、存在するがタブ接頭辞を持たfile2ない行が含まれます。file1

ファイルがソートされていない場合は、まずソートしてください。通常の代わりにbash、ksh、またはzshを使用するとしますsh

comm -3 <(sort file1) <(sort file2) > result.txt

おすすめ記事