Я ищу серийный номер. Можно ли найти его с помощью grep?Как найти строку типа **** - ****** - ****** - **** используя grep?
-4
A
ответ
1
В обычном выражении .
означает «любой символ здесь» и вне класса символов ([...]
), -
не имеет особого значения. Таким образом:
....-......-......-....
... будет выражением, которое вы ищете.
1
С GNU Grep:
echo "foo-bar abcd-abcdef-abcdef-abcd foo bar" | grep -oE '.{4}-.{6}-.{6}-.{4}'
Выход:
abcd-abcdef-abcdef-abcd
0
Серийные номера имеют только алфавит и numericals .. нет специальных символов, новые линии и т.д ..
Вы можете использовать:
\w{4}-\w{6}-\w{6}-\w{4}
0
Предполагая, что серийный номер цифры AZ и 0-9 это правильное регулярное выражение для серийного номера АВС1-A1B2C3-A3B2C1-123A:
[A-Z0-9]{4}-[A-Z0-9]{6}-[A-Z0-9]{6}-[A-Z0-9]{4}
AZ означает любой символ капитала от А до Z
0-9 любое число от 0 до 9
{4} означает 4-х символов
Если, например, ваш серийный номер выглядит следующим образом:
1234-ABCDEF-ABCDEF-1234
Тогда ваше регулярное выражение должно быть так:
[0-9]{4}-[A-Z]{6}-[A-Z]{6}-[0-9]{4}
Вы должны попробовать использовать www.regex101.com для построения вашего регулярного выражения
Что такое контекст? Вы пытаетесь найти эти строки в файлах? Вы работаете с bash или обрабатываете файлы с помощью языка программирования? 'grep' и регулярное выражение: например. см. здесь: [http://www.robelle.com/smugbook/regexpr.html](http://www.robelle.com/smugbook/regexpr.html) –
Пожалуйста, взгляните на [Как создать минимальный, Полный и проверенный пример] (http://stackoverflow.com/help/mcve). – Cyrus