У меня есть проблема с проверкой, если каждая строка моих файлов заканчивается буквой (A-Z (always capital))
сопровождаемый числами exatcly 8 цифры (не имеет значения который). Таким образом, у меня есть много файлов, и содержание каждого файла похоже на это:
Nc1nc2cc3OCCOc3cc2s1 A10000001
CCN(CC)C1CCN(Cc2cc(I)cc(I)c2O)CC1 B100000002
CCN(CC)C1CCN(Cc2cc(cc(I)c2O)C#CCO)CC1 C10000003
Всегда существует пространство между этой "строкой" и буквой wtih числа. Так, в этом примере B100000002
после буквы существует 9 цифр. Так как я сделанный большинство вещей вручную, которые я хотел бы проверить, существуют ли в моих файлах ошибки. Кто-либо может помочь мне с некоторой командой удара, таким образом, я вижу, какие строки имеют другой, неправильный шаблон?
Спасибо!
Можно использовать grep
для получения строк, которые не следуют правилу:
grep -v ' [[:upper:]][0-9]\{8\}$' file*
[[:upper:]]
подобран любой прописной буквой[0-9]
соответствует цифре\{8\}
"квантор", это означает, что предыдущая конструкция должна быть повторена 8 раз$
соответствия в конце строки-v
показывает строки, которые не подобраныВы могли grep с жемчугом regexp:
grep -P ' [a-zA-Z]{1}[0-9]{8}$'
-P
: для Регулярного выражения жемчуга
: regexp запускается с пространства, потому что Вы хотите пространство перед прописной буквой
[a-zA-Z]{1}
: Точно 1 alphbaetic символьный нижний регистр или верхний регистр (можно удалить a-z для верхнего регистра только т.е. [A-Z] {1}),
[0-9]{8}
: точно 8 числовых символов
$
: конец строки
Если Вы хотите отобразить строки, который не соответствует шаблону, просто добавляет -v
опция к команде grep.
Если Вы хотите к числам строк дисплея, добавьте -n
опция.
grep -Pvn ' [a-zA-Z]{1}[0-9]{8}$'