Fish Shell:
Використання регулярних виразів
Як:
Хоча оболонка Fish сама по собі не має вбудованої команди для regex, вона ефективно використовує зовнішні команди, як-от grep
, sed
, і awk
, що підтримують regex, дозволяючи вам включати операції regex у свої скрипти.
Основне зіставлення зразків за допомогою grep
Шукайте рядки у файлі, що відповідають шаблону:
grep '^[0-9]+' myfile.txt
Ця команда знаходить рядки, які починаються з однієї чи більше цифр у myfile.txt
.
Видобування і заміна за допомогою sed
Витягніть телефонні номери з файлу:
sed -n '/\([0-9]\{3\}\)-\([0-9]\{3\}\)-\([0-9]\{4\}\)/p' contacts.txt
Замініть усі зустрічі “foo” на “bar” у data.txt
:
sed 's/foo/bar/g' data.txt
Використання string
для основних операцій з Regex
Команда string
оболонки Fish підтримує прості операції з regex, такі як пошук за зразком і заміна:
Знайти зразок у рядку:
echo "fish 3.1.2" | string match -r '3\.[0-9]+\.[0-9]+'
Вивід:
3.1.2
Замінити цифри після ‘fish’ на ‘X.X.X’:
echo "Welcome to fish 3.1.2" | string replace -ra '([fish]+\s)[0-9\.]+' '$1X.X.X'
Вивід:
Welcome to fish X.X.X
Розширене зіставлення за допомогою awk
Надрукуйте другий стовпець даних, де перший стовпець відповідає певному зразку:
awk '$1 ~ /^a[0-9]+$/ {print $2}' datafile
Ця команда шукає рядки у datafile
, де перший стовпець починається з “a”, за яким слідує одна чи більше цифр, і друкує другий стовпець.
Інтегруючи ці зовнішні команди, програмісти оболонки Fish можуть використовувати повну потужність регулярних виразів для складних завдань з маніпуляції текстом, покращуючи природні можливості оболонки.