いくつかの単語の内容を含む2つのファイルがあります。
はい
file1には10個の単語があります。
world
earth
eye
ear
near
from
going
want
we
our
2番目のfile2には7つの単語があります。
world
earth
eye
ear
near
going
want
file2にない単語を3番目のファイルとして出力したいと思います。
たとえば、(from、our、we)はfile2には存在しません。
答え1
ただ
grep -vFxf file2 file1 > file3
これにより、file2にはありませんが、file1にはある行が返され、結果はfile3に書き込まれます。
-v
、リバースマッチ、これは対応する行がfile2にのみ存在することを意味します。これがなければ、-v
両方のファイルの対応する行が返されます。-F
これは、パターンがgrep
正規表現ではなく固定パターン文字列と一致することを示します。-x
、行全体をパターン文字列に一致させます。-f
、ファイルからパターンを読み取ります。
あるいは、質問のタイトルと言及したコマンドに基づいて、これらの一意の単語sort -u
(実際には行)がfile1またはfile2にあることを望むようです。だとしたら、それだけでいいです。
uniq -u <(sort file1 file2) > file3
答え2
別の解決策:
comm -23 <(sort file1) <(sort file2) > file3
-23は、file2または両方のファイルに含まれる行のみを抑制します。