-2

2つのファイルがあります。1つはホワイトリストファイル(ホワイトリストに登録されたコールスタック)で、もう1つはテスト中のコールスタックファイルです。内容例:

Call stack: [thread] | object 1.0 | object 2.0 | object 3.0 | ...... | malloc
Call stack: [thread] | object 1.1 | object 2.1 | object 3.1 | ...... | malloc
Call stack: [thread] | object 1.2 | object 2.2 | object 3.2 | ...... | malloc
Call stack: [thread] | object 1.3 | object 2.3 | object 3.3 | ...... | malloc

これで、次の内容のテストファイルを取得します

Call stack: [thread] | object 1.0 | object 2.0 | * | ...... | malloc
Call stack: [thread] | object 1.1 | * | * | ...... | malloc
Call stack: [thread] | * | object 2.2 | object 3.2 | ...... | malloc
Call stack: [thread] | object 1.3 | object 2.3 | * | ...... | malloc

これらの2つのファイルを相互に比較すると、ファイルが同じであることを示すtrueが返されるようなアルゴリズムが必要です。つまり、テストファイルにはホワイトリストファイルの外部にコールスタックがありません。

正規表現のgrepを使用したwhileループでうまくいくはずだと理解しています。問題は、コールスタック内の特殊文字が原因で問題が発生していることを試したときです。

制約:シェルのみを使用する必要があります。

どんな助けでもいただければ幸いです。

4

1 に答える 1

1

正規表現が含まれていない場合は、次の-Fオプションを試すことができますgrep

grep -xvFf whitelist testfile
于 2013-01-07T10:42:51.283 に答える