grep パターン構文

grep パターン構文

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

関連情報