Bash:
Korzystanie z wyrażeń regularnych
Jak to zrobić:
Podstawowe dopasowywanie wzorców
Aby sprawdzić, czy ciąg pasuje do wzorca, możesz użyć grep
, narzędzia wiersza poleceń do wyszukiwania zestawów danych w formie zwykłego tekstu dla linii, które pasują do wyrażenia regularnego:
echo "Hello, World!" | grep -o "World"
# Wyjście: World
Ekstrakcja konkretnych danych
Aby wyodrębnić części danych, które pasują do twoich wzorców regex, możesz użyć -o
z grep
:
echo "Error: File not found" | grep -oE "[A-Za-z]+:"
# Wyjście: Error:
Użycie Regex z sed
sed
(edytor strumieniowy) to potężne narzędzie do parsowania i transformacji tekstu. Oto jak używać sed
z regexem do zamiany tekstu:
echo "Bash jest świetny" | sed -e 's/świetny/wspaniały/'
# Wyjście: Bash jest wspaniały
Dopasowywanie wzorców w instrukcjach warunkowych
Bash również obsługuje regex bezpośrednio w instrukcjach warunkowych:
[[ "https://example.com" =~ ^https?:// ]] && echo "URL jest poprawny" || echo "URL jest niepoprawny"
# Wyjście: URL jest poprawny
Zaawansowane dopasowywanie wzorców i manipulacja z awk
awk
to kolejne narzędzie do przetwarzania tekstu, które obsługuje bardziej złożone ekstrakcje i manipulacje danymi. Może być szczególnie przydatny podczas pracy z uporządkowanymi danymi tekstowymi, takimi jak CSV:
echo -e "ID,Imię,Wiek\n1,Jan,22\n2,Anna,24" | awk -F, '$3 > 22 {print $2 " jest starszy(a) niż 22."}'
# Wyjście: Anna jest starsza niż 22.
Chociaż wbudowane funkcje regex w Bashu pokrywają wiele przypadków użycia, dla bardzo zaawansowanych operacji regex, możesz rozważyć użycie kombinacji skryptów Bash z skryptami perl
lub python
, ponieważ te języki oferują potężne biblioteki regex (np. re
w Pythonie). Prosty przykład z Pythonem:
echo "Capture this 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# Wyjście: 123
Incorporowanie tych języków programowania w razie potrzeby może pomóc wykorzystać pełną moc regex w twoich skryptach Bash.