Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
144
Добавлен:
20.02.2016
Размер:
727.07 Кб
Скачать

Глава 11

Обработка текстовой информации

11.1Команда sed

Синтаксис:

sed [-n] [-e команды] [-а ком_файл]файл...

Описание:

Вызвать редактор для указанных файлов.

Опции:

-eкоманды

Исполняются команды sed-скрипта

-

Запустить sed-программу из файла

fфайл_программы

 

-n

Выводит только строки, указанные командой р

Командные последовательности:

Синтаксис команд аналогичен ed (см. Разд. 10.1).

11.2Команда awk

Синтаксис:

awk [-Fразделитель] [’программа’] [файл...]

awk [-Fразделитель] [-f файл_программы] [файл...]

Описание:

Интерпретатор языка обработки текстовых потоков.

Каждая строка входного потока разбивается на поля согласно установленным разделителям — по умолчанию пробелы и табуляции. Эти умолчания могут быть изменены установкой переменной среды $FS. Поля представляются переменными $1, $2...; $0 обозначает всю строку. При изменении любого поля меняется и вся строка.

Программы имеют следующий формат:

BEGIN { начальные_операторы } { селектор действие ... } END { конечные_операторы }

64

11.2. Команда awk

Опции:

-F разделитель

 

Установить разделитель полей

-f файл_программы

Запустить awk-программу из файла

Переменные:

 

 

 

 

FS

Разделитель входных полей

RS

Разделитель входных строк

FILENAME

Имя текущего входного файла

NF

Количество полей в текущей строке

NR

Номер строки

OFMT

Формат для вывода чисел. По умолчанию — %6g

OFS

Разделитель выходных полей

ORS

Разделитель выходных строк

Операторы:

if (выражение) оператор [else оператор]

while (выражение) оператор

for (выражение;выражение;выражение) оператор

for (выражение in массив) оператор

break

continue

([оператор...])

переменная = выражение

print [список_выражений] [>|>> файл]

print [список_выражений] [| процесс]

printf [список_выражений] [>|>> файл]

printf [список_выражений] [| процесс]

next

exit (выражение)

Функции:

length[()]

Длина строки, по умолчанию $0

split(строка,массив,разделители)

Разбить строки

substr(строка,начало,длина)

Выделить подстроку

index(строка,подстрока)

Найти позицию подстроки в строке. В случае неудачи

 

 

 

возвращается 0

getline

 

Прочитать следующую входную строку. В случае конца

 

 

 

файла возвращается 1, иначе — 0

 

 

sprintf(формат,выражение,...)

Форматный вывод в строку

exp(выражение)

Экспонента

logвыражение)

Натуральный логарифм

sqrt(выражение)

Квадратный корень

int(выражение)

Округление до ближайшего целого

Примеры:

 

 

$ cat > test

 

123

456

789

 

abc def ghi ~!@ #$% ^&*

65

11.3. Команда cmp

$ awk ’/abc/’ < test abc def ghi

$ awk ’END{print NR}’ < test 3

$ awk ’{print $2 $3}’ < test 456789

defghi

#$%^&*

11.3Команда cmp

Синтаксис:

cmp [-s] файл1 файл2

Описание:

Производится сравнение двух бинарных файлов. При их различии возвращается код ошибки и выводится номер байта, где это произошло.

Опции:

-s

Не выводить текстового сообщения

11.4Команда diff

Синтаксис:

diff [-befr] файл_или_каталог1 файл_или_каталог2

Описание:

Найти различия в текстовых файлах и вывести их на стандартный вывод.

Опции:

-b

Игнорирование лишних пробельных символов

-e

Создать последовательность ed-команд (см. Разд. 10.1) для преобразования

 

файла1 в файл2

-f

Создать последовательность ed-команд (см. Разд. 10.1) для преобразования

 

файла2 в файл1

-r

Если аргументы — каталоги, выполнять команду рекурсивно

11.5Команда fold

Синтаксис:

fold [-b] [-s] [-w ширина] [файл...]

Описание:

Разбивка длинных строк на строки требуемой длины.

66

 

11.6. Команда sort

Опции:

 

 

 

 

 

-b

Учитывать символы возврата каретки

-s

Разбивка по ближайшему пробелу

 

-wширина

Установить ширину выходной строки (по умолчанию — 80)

 

11.6Команда sort

Синтаксис:

sort [-cmunr] [файл...]

Описание:

Сортировка файлов.

Опции:

-c

Проверка, отсортирован ли файл; выдача кода завершения

-m

Слияние отсортированных файлов

-u

Вывод только одной строки из нескольких одинаковых

-n

Численный порядок сортировки

-r

Обратный порядок сортировки

Примеры:

 

$ cat > test

 

009

 

01

 

2

 

abc

 

xyz

 

$ sort test

 

009

 

01

 

2

 

abc

 

xyz

 

$ sort -n test

 

abc

 

xyz

 

01

 

2

 

009

 

11.7 Команда uniq

Синтаксис:

uniq [-cdu] [-полей] [+символов] [входной_файл [выходной_файл]]

67

Соседние файлы в папке 1