grepコードは以前に生成された結果を生成しません。

grepコードは以前に生成された結果を生成しません。

grep私がよく使用した小さなコードは、以前のように動作しませんでした。以下は、Animal.txtという7行、3列のデータセットがある例です。

Animal Habitat Family
Bear   forest  Ursidae
Dog    house   Canidae
Cat    house   Fenidae
Wolf   mountain Canidae
Eagle  mountain Accipitridae
Lion   sabana  Fenidae

動物3匹の名前が書かれたリストがあります。私が望むのは、これらの動物の名前を含む行を抽出することです。リスト名は Animal3.txt です。

Dog
Cat
Bear

データセットとリストはすべてタブ区切りのファイルです。私が使用するコードは次のとおりです。

grep -w -F -f ./animal3.txt ./animal.txt > ./output.txt

出力は1行だけです。Bearいくつかのフォーラムで検索しましたが、似たようなものが見つかりませんでした。何が起こっているのか、私が何をしているのかは本当にわかりません。

ベストアンサー1

コメントを通して、animal3.txtファイルの少なくとも一部の行の末尾にキャリッジリターンがあることを理解しています。これらの文字は使用されるパターンの一部になりgrep、結果としてファイルのパターンが一致しなくなりますanimal.txt

ファイルにキャリッジリターンがあってはならない場合は、次のものを使用できます。

tr -d '\r' <animal3.txt >animal3-new.txt

削除してください。その後、animal3.txt元のファイルを変更されたファイルに置き換えることができますanimal3-new.txt

おすすめ記事