私はシェルスクリプトに初めて触れ、現在学んでいます。
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
答え2
おそらくこれが最も簡単な方法です。注は、行の文字が異なることを示す<
省略です。|
(5行file1.txt
目にはコピー - 貼り付けでいくつかの空白文字がありません。)
$diff -y file1.txt file2.txt > diff.txt
1 StartInstall, CDM_2.5B263, OK 1 StartInstall, CDM_2.5B263, OK
2 EndInstall, CDM_2.5B263, SUCCESS 2 EndInstall, CDM_2.5B263, SUCCESS
3 StartPatch, CDM_2.5.0.2B1, OK <
4 StartPatch, CDM_2.5.0.3B1, OK 4 StartPatch, CDM_2.5.0.3B1, OK
5 EndPatch, CDM_2.5.0.3B1, SUCCESS | 5 EndPatch, CDM_2.5.0.3B1, SUCCESS
新しいファイルは出力されませんが、2つのファイルを視覚的に比較し、欠落している行と文字を視覚的に強調するvimdiffセッションを取得します。
$vimdiff file1.txt file2.txt