
3つのファイルで作成した名前のファイルがあります。パターンがどのファイルにも存在しない場合は0を、パターンが存在する場合は1をgrepしたいのですが、このコマンドを使用しています。
cat X.nam |xargs -i grep -c -P '{}$' A.nam > a
このエラーが発生しています
grep nothing to repeat
X.nam
A
AADLGS
AAEGVG
AAGVGTWP
AASLSSIT
AASLSSVN
AASLTGCN
ACL*AML
ACLSGSA
ACL*VVM
A.nam
AAGVGTWP
AASLSSIT
AASLSSVN
AASLTGCN
ACL*AML
ACLSGSA
答え1
*
このエラーは、 orのような量指定子+
の前に何もないことを意味します。
X.nam
の単語を正規表現として扱うのではなく、文字どおりに一致させる必要があると思われます。PCRE では、パターンの一部を\Q
とで囲ん\E
で引用符で囲むことができます。
cat X.nam |xargs -i grep -c -P '\Q{}\E$' A.nam > a