синтаксис шаблона grep

синтаксис шаблона grep

У меня есть файл с именами, который я создаю из трех файлов. Я хочу grep 0, если шаблон отсутствует в каком-либо файле, и 1, если шаблон присутствует. Я использую эту команду

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

Связанный контент