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

Введение в Linux (110

..pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
514.38 Кб
Скачать

9. КОМАНДЫ ДЛЯ ОБРАБОТКИ ТЕКСТА

Примеры на файле:

1 2 3D

03 1 4

1 2 3d

1 2 3

sort – команда для сортировки.

sort

 

sort -n

sort -r

sort -f

сортировка

сортировка

обратная

без учета ре-

строк

чисел

1

2

3D

гистра

03

1

4

1

2

3

1

2

3d

 

1

2

3

1

2

3d

1

2

3

sort – R

1

2

3d

1

2

3D

03

1

4

случайно

1

2

3D

03

1

4

 

 

 

 

uniq – выделяет уникальные строки. Требует перед собой сортировки

sort | uniq

sort | uniq

уникальные

уникальные без учета

03 1 4

регистра

1

2

3

03

1

4

1

2

3d

1

2

3

1

2

3D

1

2

3d

 

 

 

 

 

 

cut – обрезка по полям, символам, блокам.

cut -d' ' -

cut -d' ' -

cut

-d' ' -

cut -d' ' -

f1

f2,3

f1-3

 

f2-

первое поле

поля 2 и 3

поля c 1 по

поля со

1

2

3D

3

 

 

второго

03

1

4

1

2

3D

2

3D

1

2

3d

03

1

4

1

4

1

2

3

1

2

3d

2

3d

 

 

 

1

2

3

2

3

 

 

 

 

 

 

 

 

21

cut -d' ' -f-

cut -b4

cut -b1,4

cut -b1-4

2

 

4

символ в

1 и 4 символ

с 1 по 4

поля до вто-

строке

1_

символ

рого

_

 

01

1_2_

1

2

1

 

1_

03_1

03 1

_

 

1_

1_2_

1

2

_

 

 

1_2_

1

2

 

 

 

 

 

 

 

 

 

 

wc(Word Count) – подсчёт количества символов, строк, слов.

wc

wc -l

wc

-w

wc -c

все вместе

кол-во строк

кол-во слов

кол-во

4___12___27

4

12

 

символов

 

 

 

 

27

tr (Translate) – преобразования множеств символов.

tr -d 3

tr 123 456

удалить символ «3»

превратить символы 123

1

2

D

соответственно в 456

0

1

4

4

5

6D

1

2

3

06

4

4

1

2

 

4

5

6D

 

 

 

4

5

6

 

 

 

 

 

 

fold – форматирование по ширине (умолчание 80 – как в терминалах).

fold -w 5

выровнять на ширину 5 1 2 3

D

03 1

4

1 2 3 d

1 2 3

expand, unexpand – преобразование табуляции в пробелы и наоборот, nl – печать номеров строк.

22

nl

1 1 2 3D

2 03 1 4

3 1 2 3d

4 1 2 3

head, tail – начало или конец файла (по умолчанию первые/последние 10 строк с края).

head -n1

head

-n-1

tail -n1

первая строка

все,

до 1 с конца

последняя строка

1

2

3D

1

2

3D

1

2

3

 

 

 

03

1

4

 

 

 

 

 

 

1

2

3d

 

 

 

 

 

 

 

tail -n+3

head

-c14

head -c12

все, начиная с 3

14 первых символов

12

первых символов

1

2

3d

1

2

3D

1

2

3D

1

2

3

03 1

4

03

 

1_(prompt)

 

 

 

 

 

 

 

 

 

less, more – пейджеры (утилиты для просмотра текстовых файлов), dos2unix, unix2dos (0D0A → 0A),

iconv – конвертация кодировок, diff – разница файлов,

rev – перевернуть строки справа налево. grep – поиск текста,

grep 'pattern' file(s),

grep -A3 -B4 – 3 строки до и 4 строки после,

grep -c = wc,

grep -i – ignore-case,

grep -q – quiet,

grep -R – рекурсивный поиск,

grep -v – not match,

[abcde]

[a-e]

23

[:alnum:] ~ [A-Za-z0-9]

для включения спецсимволов,

] – ставим на первое место ([]abc]),

^ – не первое место ([ab^c]),

- – последнее место ([abc-]),

. – любой символ,

^,$

\<, \> \b, \B

RE followed by

? – 0 или 1,

* – 0 или более,

+ – 1 или более,

{n} – ровно n,

{n,} - минимум n,

{n,m} – от n до m,

| – любой из шаблонов,

могут быть связаны – тогда ставить подряд.

grep

-A2 03

grep

-B1 3d

grep

-i 3d

03

1

4

03

1

4

1

2

3D

1

2

3d

1

2

3d

1

2

3d

1

2

3

 

 

 

 

 

 

 

 

 

 

 

 

grep

^1

grep

d$

grep

-i d$

1

2

3D

1

2

3d

1

2

3D

1

2

3d

 

 

 

1

2

3d

1

2

3

 

 

 

 

 

 

 

 

 

 

 

 

grep

-v 2

grep

[45]

grep

0[345]

03

1

4

03

1

4

03

1

4

 

 

 

 

 

 

grep

0[2-4]

grep

“0[2-4]\|3D”

grep

"^[0-9]\{2,\}"

03

1

4

1

2

3D

03

1

4

 

 

 

03

1

4

 

 

 

 

 

 

 

 

 

 

 

 

24

10. SED

sed – потоковый обработчик текста (Stream EDitor), sed <script> <file>

Порядок работы.

1.Берет следующую строку.

2.Удаляет \n.

3.Помещает содержимое строки в т. н. pattern-space.

4.Запускаются команды.

5.Добавляется \n.

6.Печатается на экран.

7.Чистится pattern-space.

8.Переход к новой строке.

Адреса.

NUMBER – номер строки, FIRST~STEP – номар строки, шаг,

/REGEXP/ – строка, совпадающая с RegExp,

Если много слэшей – можно использовать процент (\%REGEXP%), /REGEXP/I – без учета регистра,

/REGEXP/M – для многострочных шаблонов, ADDR1,ADDR2 – диапазон адресов, ADDR1,+N – адрес + N строк далее,

ADDR1,~N – адрес, и до следующей строки, кратной N, ADDR! – отрицание (все кроме адреса),

$ – последняя строка.

Регулярные выражения (используется жадный алгоритм).

CHAR *, \*? \+

\{I\} – ровно I,

25

\{I,J\} – от I до J,

\{I,\} – не менее I, \(REGEXP\) – группировка,

. (точка) – любой символ), ^,$ – начало, конец строки,

[LIST], [^LIST] – множества символов, REGEXP1 | REGEXP2 – ИЛИ REGEXP1REGEXP2 – конкатенация,

\DIGIT – возврат к группе REGEXP в скобках, \n – конец строки.

Команды.

# – комментарий,

q [EXIT-CODE] – выход,

d – удалить pattern-space, перейти к следующей строке, p – напечатать pattern-space,

n – забрать (добавить) следующую строку в pattern-space, {COMMAND} – группировка команд, s/REGEXP/REPLACEMENT/FLAGS – замена,

Флаги.

g – все вхождения,

NUMBER – только вхождение номер NUMBER, p – если замена, то печатать,

w – если замены – печатать в файл, i(I) – без учёта регистра.

sed

-n

1p

sed -n 1~2p

sed

-n \$p

1

2

3D

 

1

2

3D

1

2

3

 

 

 

 

1

2

3d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26

 

 

 

sed

-n

'/3[a-

sed

-n

'/3[a-

sed

-n

'1,3p'

d]/p'

 

d]/Ip'

 

1

2

3D

 

1

2

3d

 

1

2

3D

 

03

1

4

 

 

 

 

 

1

2

3d

 

1

2

3d

 

 

 

 

 

 

 

 

 

 

sed

-n

'3!p'

sed

-n

'3,+1p'

sed

-n

'1,~3p'

1

2

3D

 

1

2

3d

 

1

2

3D

 

03

1

4

 

1

2

3

 

03

1

4

 

1

2

3

 

 

 

 

 

1

2

3d

 

 

 

 

 

 

 

sed

's/1 2/0/'

sed

's/[0-9]/x/'

sed

's/[0-

0

3D

 

 

x 2

3d

 

9]\|d/x/'

03 1 4

 

x3 1 4

 

x 2

3d

 

0

3d

 

 

x 2

3d

 

x3 1 4

 

0

3

 

 

x 2

3

 

x 2

3d

 

 

 

 

 

 

 

 

 

x 2

3

 

 

 

 

 

 

 

sed

's/[0-

sed

's/[0-

sed

's/[0-

9]\|d/x/g'

9]\|d/x/Ig'

9]\|d/x/2'

x x

xD

 

x x

xx

 

1

x

3D

 

xx x x

 

xx x x

 

0x 1 4

 

x x

xx

 

x x

xx

 

1

x

3d

 

x x

x

 

x x

x

 

1

x

3

 

 

 

 

 

 

 

 

 

 

 

 

 

11. AWK

AWK – текстовый процессор, шаблонно-ориентированный. Позволяет больше разных возможностей по сравнению с SED.

Структура файлаAWK: шаблон {действие} шаблон {действие}

...

Порядок работы:

1.Текст разделяется на записи (ROW), разделенные \n, и поля (FIELD), разделенные пробелом или табуляцией.

2.Для каждой строки сравнивает шаблон.

3.Если шаблон подходит – выполняет указанные действия.

27

4.Переходит к следующему шаблону.

5.Если не указан шаблон – делает для всех строк.

6.Если не указано действие – просто печатает строку.

7.BEGIN, END – специальные шаблоны, выполняемые в начале и конце обработки всего текста.

Синтаксис.

Условный оператор.

if (condition) then

{

action

}

else

{

action

}

Циклы.

for (;;)

for (a in array) do{

}while ()

while () {

}

print – печать текущей записи print expr-list

print fmt expr-list $1 – поле 1 $0 – вся строка

пробел – конкатенация

~ - соответствие регулярному выражению !~ - несоответствие регулярному выражению

28

Математические операторы:

atan2()

cos()

sin()

exp()

int()

log()

rand() - 0..1 sqrt

Строковые операторы:

index (str, substr) length(str) substr(str, from, len)

Переменные:

RS, FS – входные разделители строк и полей, ORS, OFS – выходные разделители полей, FNR – текущий номер строки,

NF – количество полей текущей строки.

Примеры.

1.

BEGIN { print “Hello world!”; exit }

2.

BEGIN {max=0}

{if (length($0) > max) max = length($0); } END { print max; }

12. LaTEX – СИСТЕМА ПОДГОТОВКИ ДОКУМЕНТОВ

CentOS – texlive-latex.

Пример построения отчёта.

\documentclass [11pt] {article} \author {A. Vladimirov}

\title {Test report}

29

\begin {document} \maketitle

\begin {tabular} {|c|c|} \hline

User & Home directory\\ \hline

User1 & /home/user1 \\ \hline

User2 & /home/user2 \\ \hline

\end {tabular} \\ Total count : 2 \end {document}

В результате получаем:

13. ТЕКСТОВЫЕ РЕДАКТОРЫ

Изначально для правки текста использовался редактор ed, который не выводил то, что правится. Просто вводились команды и всё. После ed поя-

вился vim (vi – от слова visual).

Современные редакторы (консоль):

1.ed,

2.nano (pico) – простой и понятный,

3.vi / vim – сейчас уже vim, это Vi Improved, имеет намного больше возможностей,

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]