17

Text-Fu [Часть 5]

Обо всех ошибках пишите в комментарии

Содержание:

Часть 1

Часть 2

Часть 3

Часть 4

13. tr (Translate / перевод)

Команда tr (translate / перевод) позволяет вам переводить набор символов в другой набор символов. Давайте попробуем пример перевода всех символов в нижнем регистре в символы верхнего регистра.

$ tr a-z A-Z
hello
HELLO

Как вы можете видеть, мы определили промежутки a-z в A-Z, и весь текст, который мы ввели в нижнем регистре, появился в верхнем регистре.

Упражнения:

Попробуйте следующую команду, что происходит?

$ tr -d ello
hello

14. uniq (Unique / уникальный)

Команда uniq (unique / уникальный) - другой полезный иструмент для обработки текста.

Давайте скажем, что у нас есть файл с множеством дубликатов:

reading.txt
book
book
paper
paper
article
article
magazine

И вы хотите удалить эти дубликаты, давайте применим команду uniq:

$ uniq reading.txt
book
paper
article
magazine

Давайте получим количество копий для каждой строки в файле:

$ uniq -c reading.txt
2 book
2 paper
2 article
1 magazine

Давайте просто получим уникальные значения:

$ uniq -u reading.txt
magazine

Давайте просто получим дублирующиеся значения:

$ uniq -d reading.txt
book
paper
article

Примечание: uniq не обнаруживает дублирующиеся линии, если они не соседи. Например:

Давайте скажем, что у вас есть файл с дубликатами, которые не соседствуют:

reading.txt
book
paper
book
paper
article
magazine
article
$ uniq reading.txt
reading.txt
book
paper
book
paper
article
magazine
article

Результат, возвращенный uniq содержит все значения, в отличии от первого примера:

Чтобы обойти это ограничение, мы можем использовать uniq вместе с sort:

$ sort reading.txt | uniq
article
твенно.
book
magazine
paper

Упражнения:

Какой результат вы получите, если попробуете uniq -uc?

15. wc and nl

Команда wc (word count / число слов) показывает полное количество слов в файле.

$ wc /etc/passwd
96  265  5925 /etc/passwd

Это покажет количество строк (lines), число слов (words) и количество байтов (char), соответственно.

Чтобы увидеть число только конкретного поля, используйте -l, -w, -c соответственно.

$ wc -l /etc/passwd
96

Другая команда, которой вы можете узнать количество строк в файле - nl (number lines / количество строк).

file1.txt
i
like
turtles
$ nl file1.txt
1. i
2. like
3. turtles

Упражнения:

Как вы можете получить полное количество строк в файле, используя nl без поиска по всему выводу? Подсказка: Используйте некоторые другие команды, о которых вы узнали в этом курсе.

16. grep

Команда grep, возможно наиболее важная команда, в отношении обработки текста, которую вы будете использовать. Она позволяет вам искать файлы по особенностям, которые совпадают с некоторым шаблоном. Что если бы вы хотели знать, существует ли файл в некоторой директории, или если бы вы хотели узнать, есть ли строка в файле? Конечно, вам не придется копаться в каждой строчке текста, вы будете использовать grep!

Давайте будем использовать наш файл sample.txt как пример:

$ grep fox sample.txt

Вы должны увидеть, что grep нашел fox в нашем sample.txt.

Вы также можете задавать шаблоны, которые не чувствительны к регистру с флагом -i.

$ grep -i somepattern somefile

Чтобы получить большую гибкость с grep вы можете сочетать его с другими командами с |.

$ env | grep -i User

Как вы можете видеть, grep довольно универсален. Вы даже можете использовать регулярные выражения в вашем шаблоне:

$ ls /somedir | grep '.txt$'

Должно вернуть все файлы, оканчивающиеся на .txt в директории somedir.

Упражнения:

Возможно, вы слышали о egrep или fgrep, эти устаревшие вызовы grep заменены на grep -E и grep -F. Прочитайте man grep, чтобы узнать больше.

На этом заканчивается наш курс, надеюсь, что вам понравилось, пишите ваши пожелания в комментарии!

GNU/Linux

1.2K пост15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

0
Автор поста оценил этот комментарий

@Cortana, я так понимаю - ты подвязался переводчиком к проекту? Если так, то подскажи - какие уроки в планах перевести в ближайшем будущем?

раскрыть ветку
0
Автор поста оценил этот комментарий

Отлично! А по AWK есть гайд? Пытаюсь разобраться, а не выходит... А лабу итоговую завтра сдавать. А сессия в пятницу заканчивается ;((

раскрыть ветку