2つのファイルを比較し、一致するものを印刷します。

2つのファイルを比較し、一致するものを印刷します。

Unixシェルスクリプトでこれを得る方法はありますか? 1列(1000行)のfileAと26列(13000行)のfileBがあります。
fileBを使用してfileAの各値を取得し、一致する場合は、FileBの26個の値をすべて返す必要があります。ファイルAの検索値は、ファイルBの26個の値のいずれかに表示できます。 Bファイルのどの列にも値が固定されていません。

文書:

abc
def
ghi

ファイルB:

drm|fdm|pln|ess|abc|zeh|....|yer (26 values)
fdm|drm|def|ess|yer|zeh|....|pln

ここで、abcfileAのエントリは列5です。 FileBの値 - したがって、私の結果はFileBの26の値すべてでなければなりません。
同様にdef、ファイルAの3番目の列も同じです。 FileBの値 - したがって、私の結果はFileBの26の値すべてでなければなりません。

この方法でレコードセット全体を操作する必要があります。

一致するものがない場合、レコードは無視されます。

ベストアンサー1

以下を使用できますgrep

grep -Fwf fileA fileB

からman grep

   -F, --fixed-strings
          Interpret PATTERN as a  list  of  fixed  strings,  separated  by
          newlines,  any  of  which is to be matched.  (-F is specified by
          POSIX.)
   -f FILE, --file=FILE
          Obtain  patterns  from  FILE,  one  per  line.   The  empty file
          contains zero patterns, and therefore matches nothing.   (-f  is
          specified by POSIX.)
   -w, --word-regexp
          Select  only  those  lines  containing  matches  that form whole
          words.  The test is that the matching substring must  either  be
          at  the  beginning  of  the  line,  or  preceded  by  a non-word
          constituent character.  Similarly, it must be either at the  end
          of  the  line  or  followed by a non-word constituent character.
          Word-constituent  characters  are  letters,  digits,   and   the
          underscore.

おすすめ記事