2017-06-14 8 views
0

入力私は同じファイル名を持つ行の繰り返し発生から成る入力ファイルがスクリプトを

# FILE:app/src/file1.c, something_over_here 
something_over_here 
# FILE:app/src/file1.c, something_over_here 
something_over_here 
# FILE:app/src/file2.c, something_over_here 
something_over_here 
# FILE:app/src/file2.c, something_over_here 
something_over_here 
........... 

出力

# FILE:app/src/file1.c, something_over_here 
something_over_here 
# FILE:app/src/file2.c, something_over_here 
something_over_here 
.......... 

を用いて繰り返し回出除去するファイルを変更します。私は、各ファイル名の最初の出現を除くすべてを削除する必要があります。どのように進めますか?私は非常にスクリプト(Python /シェル)に精通していない。私はに進めるためにどの方向を知る必要があり

+0

これらの 'something_over_here'行には何が含まれていますか?あなたの出力には削除されたものもありますが、削除する必要がありますか? – ilkkachu

+0

質問は不明です。 "something_over_here"は任意の文字列ですか? '#FILE:app/src/file1.c、foo'は'#FILE:app/src/file1.c、bar'と同じ行としてカウントされますか?重複した見出し行の後のテキストは、見出し行とともに削除されますか? –

+0

@ilkkachu something_over_hereは、その上にある行に関連しており、削除する必要があります。つまり、重複ヘッダーの後のテキストも、重複ヘッダーとともに削除する必要があります。 – Jab

答えて

0

あなたが実際に欲しいものについて多くの仮定を作り、試してみてください。

awk '/^#/ {p=H[$2]++} !p ' input > output 

これだけで、それは 'で始まる行を見たときに、ファイルをスキャンして、カウンタをインクリメント# '。カウンタは各ファイル名(コメントで始まる行の2列目)に保存され、直前に表示されたファイルのカウンタが以前に表示されていれば、行は印刷されません。

+0

これは機能しました。ありがとう – Jab

+0

私はただ必要な列を印刷し、出力ファイルのヘッダーの他の列を無視できますか? @ウィリアムPursell – Jab

+0

あなたは何を意味するかわからない。しかしおそらくあなたは 'awk '/ ^#/ {NF = 2; p = H [$ 2] ++}!p'' –

関連する問題