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-скриптах.