2011-12-22 17 views
3

私はいくつかのハードウェアをモデル化するためにテストベンチで作業しています。各行はテストケースとして機能します。私は、次があります。diff出力に従ってLinuxファイルから特定の行を出力する

ファイルイン - >に、mymodel - >ファイルアウト

私はまた私の出力が一致しなければなりませんファイル参照を持っています。

開発中に、出力と参照の間に多くの不一致が存在します。私は違う行番号を知っておく必要があります。ファイルインからバグファイル 私はバグの多いラインでMyModelを実行して、より速いデバッグを行うことができます。

[編集]私のファイルのための例

INPUT(実際のワークロードは、何百万行を持っている)

100 000 0008EDF3FCFF3FCFF3FCFF3FCFF3342B 00084000000000000000000000507F1A 
100 000 0008F800000000000000000000000004 80074000000000000000000000420000 
101 000 0006C0000000000001A0308801C00000 0008E000000000000000000030A61108 
100 000 80020000088C00000000000000000000 8008EDF3FCFF3FCFF3FCFF3FCFF3FF9F 
100 000 00090413FCFF3FCFF3FCFF3FBE75EF5B 0006C0000000000014CB826109E00000 
101 000 000903B0000000000000001A9CC23829 000840000000000000006A7308E0A410 
101 000 00068000000000000000000C08000000 00090220000000000000000000000003 
100 000 800902A3FCFF762DE9F248E6F44B625F 9806A1404555A482BB52150248C00000 
100 000 0006C0005BE1D493AB588D1E49E00000 00094011E4FF3FCFE68E3CFC3C46251E 
100 000 8006C0017B35F0E248B64BC001000000 000940704000000095B6F470A2AB22E0 

OUTPUT

14088FF3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
18088FF3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
8C088FF3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
94088FF3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
10088DF3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
640895F3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
88088DF3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
E00895F3FCFF3FCFF3FCFF3FCFF3FCFF 00000 
04088793FCFF3FCFF3FCFF3FCFF3FCFF 00000 
1C088093FCFF3FCFF3FCFF3FCFF3FCFF 00000 

REFERENCEファイルが正しい出力と同じですが、バグ1つ以上の16進数文字を変更する可能性があります。バグのある行では、File-Inは新しいファイルFile-In-bugsにコピーされます。これで問題がより明確になることを願っています。

これまでのことはあまりありません。私はLinuxパイプが役に立つと思う。

+2

いくつかのサンプルデータを投稿できますか? –

+0

と期待される出力形式。がんばろう。 – shellter

答えて

1
diff --old-line-format '%L' --new-line-format '' --unchanged-line-format '' File-out File-Reference 

しかのみFile-outで見つけることができるの行を示すの出力を生成しますが、それは行番号を提供することはありません。

diff --old-line-format '%L' --new-line-format '' --unchanged-line-format '' <(nl File-out) <(nl File-Reference) 

実際に出力する必要がある場合:

更新:以下のコメントに答えるには:

diff --old-line-format '%L' \ 
    --new-line-format '' \ 
    --unchanged-line-format '' \ 
    <(nl File-out) <(nl File-ref) | \ 
awk '{print $1 "p"}' > BUGLINEPRINTER.sed && \ 
sed -n -f BUGLINEPRINTER.sed File-In > File-In-bugs 

は、あなたがやりたいだろう。 OTOHには他の多くの方法があります。

HTH

+0

私は次のようにしました:diff -old-line-format '%L' - 新しい行形式 '--unchanged-line-format' '<(nlファイル出力)<(nl File-ref) | awk '{print $ 1}'これはすべての行にバグを表示します。今、これらの行番号を使用して、File-InをFile-In-bugにコピーする方法はありますか? –

+1

私の更新答えを見てください。 –

+1

ありがとう、それは完全に仕事をします。あなたの最初の更新された行には最後のawk =のための 'がありませんでした。)多くのありがとう –

関連する問題