
У меня есть файл с именами, который я создаю из трех файлов. Я хочу 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