GNU/Linux >> Linux の 問題 >  >> Linux

あるファイルの内容を別のファイルで検索する

grep それ自体はそうすることができます。フラグ -f を使用するだけです :

grep -f <patterns> <file>

<patterns> 各行に 1 つのパターンを含むファイルです。と <file> 検索したいファイルです。

grep を強制することに注意してください 各行の内容が正規表現のように見える場合でも、各行をパターンと見なすには、フラグ -F, --fixed-strings を使用する必要があります .

grep -F -f <patterns> <file>

あなたが言ったように、あなたのファイルが CSV の場合、次のようにすることができます:

grep -f <(tr ',' '\n' < data.csv) <file>

例として、次の行を含むファイル「a.txt」を考えてみましょう:

alpha
0891234
beta

さて、ファイル「b.txt」には次の行があります:

Alpha
0808080
0891234
bEtA

次のコマンドの出力は次のとおりです:

grep -f "a.txt" "b.txt"
0891234

for にする必要はまったくありません -ここでループ; grep 自体がこの機能を提供します。

ファイル名を使用するようになりました:

#!/bin/bash
patterns="/home/nimish/contents.txt"
search="/home/nimish/another_file.csv"
grep -f <(tr ',' '\n' < "${patterns}") "${search}"

',' を変更できます ファイルにある区切り記号に。


別の解決策:

  • awk を使用 独自の hash を作成します (例:ahash)、すべて自分で制御します。
  • $0 to $i を置き換えます 任意のフィールドに一致させることができます。
awk -F"," '
{  
   if (nowfile==""){ nowfile = FILENAME;  }

   if(FILENAME == nowfile)
   {
     hash[$0]=$0;
   }
   else
   {
       if($0 ~ hash[$0])
       {  
           print $0
       }
   }
} '  xx yy

Linux
  1. 別のファイルにない1つのファイルの行を取得するためのツール?

  2. あるファイルを別のファイルにリダイレクトするのはUuoc(猫の無用な使用)ですか?

  3. ディレクトリのコンテンツのMd5合計を1つの合計として取得するにはどうすればよいですか?

  1. ファイルをチェックするための1つのライナーが存在しますか?

  2. 複数のファイルの内容を 1 つのファイルに追加する方法

  3. あるファイルから別のファイルの単語を見つける方法は?

  1. あるドライブから別のドライブにファイル システム階層全体をコピーする

  2. 行番号によって、あるファイルの行を別のファイルの行に置き換えます

  3. ある Linux サーバーから別の Linux サーバーに大きなファイルをコピーする