2016-10-11 3 views
3

file1の文字列を検索してfile2で検索する検索コマンドを実行しようとしています。私はfile2の中に見つからないfile1の文字列だけを出力したい。file2に含まれていないfile1に含まれる文字列を検索します。

read 
write 
access 

File2のは、次のようになります:

0xFF88 T write 
0xFF87 t xyzwrite 
0xFF86 T read 
0xFF85 T xyzread 
0xFF84 T xyzaccess 

だから、所望の結果は次のようになります。File1のようなものだろう

access 

***注意、私が追加しました別の文字列の一部である文字列がすべて含まれないように、File1のすべての文字列に空白を付けます。

私が試した:

grep -vf file1 file2 
をし、すべてが、書き込みやラインを読んでいるFILE2から結果を取得するには、アドレスが含まれています。

私が試してみた:

grep -vf file2 file1 
をとfile2の行全体がFILE1に表示されませんので、FILE1のすべてを取得します。

私が試してみた:

diff file1 file2 | grep \^|< 

をし、FILE1の全ては、各ライン上<を進めます。

file2の各行の最初の8文字を削除できれば、diff/grepコマンドが機能すると言われました。

また、さまざまなオプションでfindstr(Windows)を試してみましたが、再び動作させることができません。

また、各ファイルにはこれまでに示したよりも多くの行があります。

アイデア?

+0

をfile1が示され、ダミーの文字列を追加してください、与えられた他のソリューションがために動作しない場合があります以外のテキストを持っている場合あなたは... file1とfile2の間のどの列を比較するかを明確にしています。 – Sundeep

答えて

0

おそらくループを実行する必要があります。

for i in $(cat File1); do 
    grep -q "\<$i\$" File2 || echo $i 
done 

これは、プリントアウトします:

access 
+0

ありがとうございました。上の例は毎回$ iを出力するので、File1のすべてを本質的に印刷します。私はちょっと混乱しています。なぜなら、最初の数枚しか印刷されていないように見えるからです。それからすべてを印刷し、主要な空白はすべて削除されます。 – Dragonfly

+0

File2にスペースがありますか?それが原因かもしれません。 1つの解決策: 'grep -q" \ <$ i * \ $ "File2' – mkj

関連する問題