Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents

11. Таблицы

11.1 Операторы сравнения строк

(1) s1 = s2

(2) s1 != s2

(3) s1 < s2

(4) s1 > s2

(5) -n s1

(6) -z s1

(1) s1 совпадает с s2

(2) s1 не совпадает с s2

(3) s1 в алфавитном порядке предшествует s2 (в соответствие с текущей локалью)

(4) s1 в алфавитном порядке следует после s2 (в соответствие с текущей локалью)

(5) s1 имеет ненулевое значение (содержит один символ или более)

(6) s1 имеет нулевое значение

11.2 Примеры сравнения строк

Сравнение двух строк.

        #!/bin/bash
        S1='string'
        S2='String'
        if [ $S1=$S2 ];
        then
                echo "S1('$S1') не равна to S2('$S2')"
        fi
        if [ $S1=$S1 ];
        then
                echo "S1('$S1') равна to S1('$S1')"
        fi
        

Тут автор процитирует замечание из письма, которое прислал Андреас Бек, связанное с использованием if [ $1 = $2 ].

Это не совсем хорошая идея, т.к. если либо $S1, либо $S2 - пустая строка, Вы получите синтаксическую ошибку. Лучше использовать x$1 = x$2 или "$1" = "$2" .

11.3 Arithmetic operators

+

-

*

/

% (remainder)

11.4 Арифметические операторы сравнения

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

Программистам на C следует просто выбрать оператор, соответствующий выбранному оператору в скобках.

11.5 Полезные команды

Этот раздел переписал Kees (см. Благодарности).

Некоторые из этих команд практически содержат полноценные командные языки. Здесь объясняются только основы таких команд. Для более подробной информации внимательно просмотрите man-страницы каждой команды.

sed (потоковый редактор)

Sed - это неинтерактивный редактор. Вместо того, чтобы изменять файл движением курсора на экране, Вы используете сценарий инструкций по редактированию для sed плюс имя редактируемого файла. Вы также можете рассматривать sed как фильтр. Посмотрите на некоторые примеры:

        $sed 's/to_be_replaced/replaced/g' /tmp/dummy
        

Sed заменяет строку 'to_be_replaced' строкой 'replaced', читая файл /tmp/dummy . Результат посылается на стандартный вывод (обычно на консоль), но Вы также можете добавить '> capture' в вышеприведённую строку, чтобы sed посылал вывод в файл 'capture'.

        $sed 12, 18d /tmp/dummy
        

Sed показывает все строки, за исключением строк с 12 по 18. Исходный файл этой командой не изменяется.

awk (манипулирование файлами данных, выборка и обработка текста)

Существует много реализаций языка программирования AWK (наиболее известные интерпретаторы - это gawk из проекта GNU и "новый awk" mawk.) Принцип простой: AWK ищет шаблон и для каждого подходящего шаблона выполняется какое-нибудь действие.

Автор снова создал файл dummy, содержащий следующие строки:

"test123

test

tteesstt"

        $awk '/test/ {print}' /tmp/dummy
        

test123

test

Шаблон, который ищет AWK - это 'test', а действие, которое AWK выполняет, когда найдёт строку в /tmp/dummy с подстрокой 'test' - это 'print'.

        $awk '/test/ {i=i+1} END {print i}' /tmp/dummy
        

3

Если Вы ищете несколько шаблонов, замените текст между кавычками на '-f file.awk', в этом случае Вы можете записать все шаблоны и действия в файле 'file.awk'.

grep (выводит строки, соответствующие искомому шаблону)

Мы уже рассматривали несколько команд grep в предыдущих главах, которые отображали строки, соответствующие шаблону. Но grep может делать большее.

        $grep "look for this" /var/log/messages -c
        

12

Строка "look for this" была найдена 12 раз в файле /var/log/messages.

[ok, данный пример был фикцией, /var/log/messages был переделан :-)]

wc (считает строки, слова и байты)

В следующем примере мы видим, что выводится не то, что мы ожидаем. Файл dummy в этом случае содержит следующий текст:

"bash introduction

howto test file"

        $wc --words --lines --bytes /tmp/dummy
        

2 5 34 /tmp/dummy

wc не заботится о порядке параметров. wc всегда выводит их в стандартном порядке, в таком, как Вы видите: <число строк><число слов><число байт><имя файла>.

sort (сортирует строки текстового файла)

На этот раз файл dummy содержит следующий текст:

"b

c

a"

        $sort /tmp/dummy
        

Вот как выглядит вывод:

a

b

c

Команды не должны быть такими простыми :-)

bc (вычислительный язык программирования)

bc производит вычисления с командной строки (ввод из файла, но не через перенаправление или конвейер), а также из пользовательского интерфейса. Следующий пример показывает некоторые команды. Заметьте, что автор использовал bc с параметром -q, чтобы отказаться от вывода сообщения с приглашением.

   $bc -q
        

1 == 5

0

0.05 == 0.05

1

5 != 5

0

2 ^ 8

256

sqrt(9)

3

while (i != 9) {

i = i + 1;

print i

}

123456789

quit

tput (инициализирует терминал или запрашивает базу данных terminfo)

Небольшая демонстрация возможностей tput:

        $tput cup 10 4
        

Приглашение командной строки появится в координатах (y10,x4).

        $tput reset
        

Очищается экран, и приглашение появляется в (y1,x1). Заметьте, что (y0,x0) - это левый верхний угол.

        $tput cols
        
80

Показывает возможное число символов в направлении по оси x.

Очень рекомендуется быть на ты с этими программами (как минимум). Существуют тонны маленьких программ, которые позволят Вам заняться настоящей магией в командной строке.

[Некоторые примеры были взяты из man-страниц или FAQ'ов.]


Next Previous Contents