FileAのデータが1行に1つのRIDである場合、明白な選択は(古典的に)fgrep
または(より現代的な表記法を使用して)grep -F
です。2004バージョンではPOSIXが標準化されていませんfgrep
(に置き換えられています)。grep -F
ただし、fgrep
血統は非常に長いです。たとえば、1978年頃の第7版UNIX™の一部でした。
fgrep -f FileA FileB
grep -F -f FileA FileB
FileAのデータが「1行に1つのRID」形式でない場合は、そうしてください。
しかし、fgrepはコンソールからi/pを読み取りますか
あなたがそれを言うならそれはします、しかしあなたはそれがコンソールから読まれるのを望まないでしょう。標準入力から読み取ってほしい。「コンソール入力」は、大まかに「入力する」ことを意味します。grep -F
(とはいえ、「コンソール」(ターミナル)を使用しgrep -F -f - /etc/passwd
て入力し、EOFを表示することで、の動作を確認し/bin/
ました。正常に機能しました。)
を使用している場合はbash
、「プロセス置換」を使用して、必要な結果を得ることができます。
grep -F -f <(zgrep -i xxxx FileA | grep -o "RID=[0-9|A-Z]*" | uniq | cut -d "=" -f2) FileB
プロセス置換は、<( ... )
その出力が「ファイル」(実際には、通常はのファイル記述子)に送られるようにコマンドを内部で実行し、名前は通常のファイル名引数として/dev/fd
コマンド()に与えられます。grep
を使用していない場合はbash
、代わりにこれを使用できます(これも問題なく機能しbash
、望ましい場合もあります)。
zgrep -i xxxx FileA | grep -o "RID=[0-9|A-Z]*" | uniq | cut -d "=" -f2 |
grep -F -f - FileB
唯一のダッシュは、このコンテキストでは「標準入力からの読み取り」を意味します。これはコマンドの一般的な規則です。Mac OSX10.7.4では正常に動作します。他の場所でも機能する可能性が高いです。