Використання регулярних виразів

Bash:
Використання регулярних виразів

Як:

Базове зіставлення шаблонів

Щоб дізнатися, чи рядок відповідає шаблону, ви можете використовувати grep, утиліту командного рядка для пошуку наборів даних у простому тексті за рядками, які відповідають регулярному виразу:

echo "Hello, World!" | grep -o "World"
# Вивід: World

Екстракція Конкретних Даних

Щоб витягнути частини даних, які відповідають вашим regex-шаблонам, ви можете використовувати -o з grep:

echo "Error: File not found" | grep -oE "[A-Za-z]+:"
# Вивід: Error:

Використання Regex з sed

sed (stream editor) - потужна утиліта для парсингу та перетворення тексту. Ось як використовувати sed з regex для заміни тексту:

echo "Bash is great" | sed -e 's/great/awesome/'
# Вивід: Bash is awesome

Зіставлення Шаблонів у Умовних Операторах

Bash також підтримує regex безпосередньо в умовних операторах:

[[ "https://example.com" =~ ^https?:// ]] && echo "URL is valid" || echo "URL is invalid"
# Вивід: URL is valid

Розширене Зіставлення Шаблонів та Маніпуляції з awk

awk - це ще одна утиліта для обробки тексту, яка підтримує більш складну екстракцію та маніпуляцію даними. Вона може бути корисною при роботі зі структурованими текстовими даними, наприклад, CSV:

echo -e "ID,Name,Age\n1,John,22\n2,Jane,24" | awk -F, '$3 > 22 {print $2 " is older than 22."}'
# Вивід: Jane is older than 22.

Хоча вбудовані можливості regex в Bash покривають багато випадків використання, для дуже складних операцій з regex, ви можете розглянути варіант використання комбінації Bash-скриптів з perl або python скриптами, оскільки ці мови пропонують потужні бібліотеки regex (наприклад, re в Python). Простий приклад з Python:

echo "Capture this 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# Вивід: 123

Залучення цих мов програмування при необхідності може допомогти вам розкрити повну потужність regex у ваших Bash-скриптах.