パターンファイルがあり、それをファイルディレクトリと比較したいと思います。
パターンファイルの内容は次のとおりです(正規表現でもかまいません)。
pattern-that-occurs-in-file
pattern-that-also-occurs-in-file
コンテンツがパターンと一致する場合に表示される検索ファイルの例:
unrelated content
pattern-that-occurs-in-file
more unrelated content
pattern-that-also-occurs-in-file
further unrelated content
または:
unrelated content
pattern-that-also-occurs-in-file
more unrelated content
pattern-that-occurs-in-file
further unrelated content
サンプル検索ファイルは次のとおりです。いいえ来て:
unrelated content
more unrelated content
pattern-that-occurs-in-file
further unrelated content
または:
unrelated content
pattern-that-also-occurs-in-file
more unrelated content
further unrelated content
または:
unrelated content
more unrelated content
further unrelated content
2つのパターンが表示されるファイルのリストを出力するには、grepが必要です。一致する線が見えても構いません。
単一のコマンドでこれを実行できますか?それでは、どうすればいいですか?
ベストアンサー1
正確なコマンドではありませんが、次のようになります。
num_patterns=$( wc -l < patterns_file )
for file in dir/*; do
num_occurrances=$( grep -F -o -f patterns_file "$file" | sort -u | wc -l )
if (( num_patterns == num_occurrances )); then
echo "all patterns in $file"
fi
done
パターンが正規表現の場合、一致テキストはすべての一致に対して一意でない可能性があるため、この方法は機能しません。