grep使用ファイル

grep使用ファイル

ファイルが2つあるのに違いを見つけてex2にないファイルだけを出力したいと思います。

使用するとgrep -Ff ex2.txt ex1.txt私に表示され a b c d、同じコマンドを使用すると-v出力はありません。最初のコマンドも出力されるのはなぜですかd

これを行う最も簡単な方法は何ですか? grepはこれに適していますか?おそらくdiffは、各行を読み込んで存在するかどうかに関係なく出力できるスクリプトかもしれませんか?

cat ex1.txt
a
b
c
d

cat ex2.txt
a
b
c

編集 - 私の出力は次のとおりです。

cat ex2.txt
a
b
c

cat ex1.txt
a
b
c
d

grep -vf ex2.txt ex1.txt

grep -f ex2.txt ex1.txt
a
b
c
d

ベストアンサー1

grep実際にここでの作業に適したツールではありませんが、簡単に見てみるとgrep manpage役に立ちます。grep一部はデフォルトでGNUを使用し、他のものは異なるツールを使用できるため、ディストリビューションによって大きく異なります。

  • -F ...固定文字列(改行で区切られています) - (カテゴリ:一致子を選択)
  • -f ...ファイル名(カテゴリ:一致制御)
  • -v ...一致反転(カテゴリ:一致制御)

したがって、同様のことが機能すると想像grep -Fvf ex2.txt ex1.txtすることができます。しかし、これは良い解決策ではありません。これは、始める前にファイルについて既に知っておく必要があるためです。diffファイルおよび/またはディレクトリ間のより具体的で正確な違いを提供するためのより良いツール(例:のバリエーション)があります。

編集:Fire文字列ではなく固定文字列(くそ自動破損)

おすすめ記事