Выбрать главу

hwclock, clock

Команда hwclock используется для получения доступа или коррекции аппаратных часов компьютера. С некоторыми ключами требует наличия привилегий root. Сенарий /etc/rc.d/rc.sysinit использует команду hwclock для установки системного времени во время загрузки.

Команда clock -- это синоним команды hwclock.

12.4. Команды обработки текста

sort

Сортирует содержимое файла, часто используется как промежуточный фильтр в конвейерах. Эта команда сортирует поток текста в порядке убывания или возрастания, в зависимости от заданных опций. Ключ -m используется для сортировки и объединения входных файлов. В странице info перечислено большое количество возможных вариантов ключей. См. Пример 10-9, Пример 10-10 и Пример A-9.

tsort

Топологическая сортировка, считывает пары строк, разделенных пробельными символами, и выполняет сортировку, в зависимости от заданного шаблона.

uniq

Удаляет повторяющиеся строки из отсортированного файла. Эту команду часто можно встретить в конвейере с командой sort.

cat list-1 list-2 list-3 | sort | uniq > final.list

# Содержимое файлов,

# сортируется,

# затем удаляются повторяющиеся строки,

# и результат записывается в выходной файл.

Ключ -c выводит количество повторяющихся строк.

bash$ cat testfile

Эта строка встречается только один раз.

Эта строка встречается дважды.

Эта строка встречается дважды.

Эта строка встречается трижды.

Эта строка встречается трижды.

Эта строка встречается трижды.

bash$ uniq -c testfile

1 Эта строка встречается только один раз.

2 Эта строка встречается дважды.

3 Эта строка встречается трижды.

bash$ sort testfile | uniq -c | sort -nr

3 Эта строка встречается трижды.

2 Эта строка встречается дважды.

1 Эта строка встречается только один раз.

Команда sort INPUTFILE | uniq -c | sort -nr выводит статистику встречаемости строк в файле INPUTFILE (ключ -nr, в команде sort, означает сортировку в порядке убывания). Этот шаблон может с успехом использоваться при анализе файлов системного журнала, словарей и везде, где необходимо проанализировать лексическую структуру документа.

Пример 12-8. Частота встречаемости отдельных слов

#!/bin/bash

# wf.sh: "Сырой" анализ частоты встречаемости слова в текстовом файле.

ARGS=1

E_BADARGS=65

E_NOFILE=66

if [ $# -ne "$ARGS" ] # Файл для анализа задан?

then

echo "Порядок использования: `basename $0` filename"

exit $E_BADARGS

fi

if [ ! -f "$1" ] # Проверка существования файла.

then

echo "Файл \"$1\" не найден."

exit $E_NOFILE

fi

########################################################

# main ()

sed -e 's/\.//g' -e 's/ /\

/g' "$1" | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr

# =========================

# Подсчет количества вхождений

# Точки и пробелы заменяются

#+ символами перевода строки,

#+ затем символы переводятся в нижний регистр

#+ и наконец подсчитывается количество вхождений,

#+ и выполняется сортировка по числу вхождений.

########################################################

# Упражнения:

# ---------

# 1) Добавьте команду 'sed' для отсечения других знаков пунктуации, например, запятых.

# 2) Добавьте удаление лишних пробелов и других пробельных символов.

# 3) Добавьте дополнительную сортировку так, чтобы слова с одинаковой частотой встречаемости

#+ сортировались бы в алфавитном порядке.

exit 0

bash$ cat testfile

Эта строка встречается только один раз.

Эта строка встречается дважды.

Эта строка встречается дважды.

Эта строка встречается трижды.

Эта строка встречается трижды.

Эта строка встречается трижды.