Чтение онлайн

на главную

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

b=`expr substr $a 2 6`

echo "Подстрока в строке \"$a\", начиная с позиции 2,\

и длиной в 6 символов: \"$b\"."

# При выполнении поиска по шаблону, по-умолчанию поиск

#+ начинается с ***начала*** строки.

#

# Использование регулярных выражений

b=`expr match "$a" '[0-9]*'` # Подсчет количества цифр.

echo

Количество цифр с начала строки \"$a\" : $b.

b=`expr match "$a" '\([0-9]*\)'` # Обратите внимание на экранирование круглых скобок

# == ==

echo "Цифры, стоящие в начале строки \"$a\" : \"$b\"."

echo

exit 0

Вместо оператора match можно использовать оператор :. Например, команда b=`expr $a : [0-9]*` является точным эквивалентом для b=`expr match $a [0-9]*` в примере, рассмотренном выше.

#!/bin/bash

echo

echo "Операции над строками с использованием конструкции \"expr \$string : \" "

echo "========================================================================"

echo

a=1234zipper5FLIPPER43231

echo "Строка, над которой выполняются операции: \"`expr "$a" : '\(.*\)'`\"."

# Экранирование круглых скобок в шаблоне == ==

# Если скобки не экранировать...

#+ то 'expr' преобразует строковый операнд в целое число.

echo "Длина строки \"$a\" равна `expr "$a" : '.*'`." # Длина строки

echo "Количество цифр с начала строки \"$a\" равно `expr "$a" : '[0-9]*'`."

# ------------------------------------------------------------------------- #

echo

echo "Цифры, стоящие в начале строки \"$a\" : `expr "$a" : '\([0-9]*\)'`."

# == ==

echo "Первые 7 символов в строке \"$a\" : `expr "$a" : '\(.......\)'`."

# ====== == ==

# Опять же, необходимо экранировать круглые скобки в шаблоне.

#

echo "Последние 7 символов в строке \"$a\" : `expr "$a" : '.*\(.......\)'`."

# ========= оператор конца строки ^^

# (фактически

означает переход через любое количество символов, пока

#+ не будет найдена требуемая подстрока)

echo

exit 0

Этот пример демонстрирует необходимость экранирования оператора группировки -- \( ... \) в регулярных выражениях, при поиске по шаблону командой expr.

Perl, sed и awk имеют в своем распоряжении более мощный аппарат анализа строк. Коротенький скрипт на sed или awk, внутри сценария (см. Section 33.2) -- значительно более привлекательная альтернатива использованию expr при анализе строк.

Дополнительные примеры, по обработке строк, вы найдете в Section 9.2.

12.3. Команды для работы с датой и временем

Время/дата и измерение интервалов времени

date

Команда date без параметров выводит дату и время на стандартное устройство вывода stdout. Она становится гораздо интереснее при использовании дополнительных ключей форматирования вывода.

Пример 12-7. Команда date

#!/bin/bash

# Примеры использования команды 'date'

echo "Количество дней, прошедших с начала года: `date +%j`."

# Символ '+' обязателен при использовании форматирующего аргумента

# %j, возвращающего количество дней, прошедших с начала года.

echo "Количество секунд, прошедших с 01/01/1970 : `date +%s`."

# %s количество секунд, прошедших с начала "эпохи UNIX",

#+ но насколько этот ключ полезен?

prefix=temp

suffix=`eval date +%s` # Ключ "+%s" характерен для GNU-версии 'date'.

filename=$prefix.$suffix

echo $filename

# Прекрасный способ получения "уникального" имени для временного файла,

#+ даже лучше, чем с использованием $$.

# Дополнительную информацию вы найдете в 'man date'.

exit 0

Ключ – u дает UTC время (Universal Coordinated Time -- время по Гринвичу).

bash$ date

Fri Mar 29 21:07:39 MST 2002

bash$ date -u

Sat Mar 30 04:07:42 UTC 2002

Поделиться:
Популярные книги

Приручитель женщин-монстров. Том 7

Дорничев Дмитрий
7. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 7

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4

Младший сын князя

Ткачев Андрей Сергеевич
1. Аналитик
Фантастика:
фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Младший сын князя

Неудержимый. Книга VI

Боярский Андрей
6. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга VI

Сыночек в награду. Подари мне любовь

Лесневская Вероника
1. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сыночек в награду. Подари мне любовь

Неудержимый. Книга XVII

Боярский Андрей
17. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVII

Гром над Империей. Часть 1

Машуков Тимур
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Гром над Империей. Часть 1

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Жандарм 4

Семин Никита
4. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 4

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Отмороженный 3.0

Гарцевич Евгений Александрович
3. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 3.0

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие