Text-Fu [Часть 5]
Обо всех ошибках пишите в комментарии
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, чтобы узнать больше.
На этом заканчивается наш курс, надеюсь, что вам понравилось, пишите ваши пожелания в комментарии!
@Cortana, я так понимаю - ты подвязался переводчиком к проекту? Если так, то подскажи - какие уроки в планах перевести в ближайшем будущем?
Отлично! А по AWK есть гайд? Пытаюсь разобраться, а не выходит... А лабу итоговую завтра сдавать. А сессия в пятницу заканчивается ;((