Команда tr применяется для преобразования или удаления символов из файла. Распространенный сценарий использования tr — перевод строчных букв в прописные. Например, пусть в домашнем каталоге пользователя у нас есть текстовый файл test.txt со следующими строками:
tom bob sam alice kate
Все символы в файле изначально в нижнем регистре. Теперь преобразуем их в верхний регистр:
eugene@Eugene:~$ cat test.txt | tr a-z A-Z TOM BOB SAM ALICE KATE
Как видно, команда tr
применяется к строкам из файла test.txt, которые считываются командой cat
. В данном случае команда tr преобразует все символы диапазона a–z
в соответствующие символы из диапазона A–Z
Преобразованный результат затем можно записать в другой файл:
cat test.txt | tr a-z A-Z > test2.txt
Для сортировки строк в файле применяется команда sort:
eugene@Eugene:~$ cat test.txt | sort alice bob kate sam tom
Аналогично можно отсортировать вывод других команд, например, список файлов и каталогов:
eugene@Eugene:~$ ls | sort Desktop Documents Downloads extensions Music Pictures Public shell snap Templates Videos
По умолчанию команда сортирует строки в лексикографическом порядке. Однако с числами подобная сортировка может давать некорректные результаты. Например, в файле test.txt следующие строки:
12 11 4 56 17
Результат сортировки по умолчанию:
eugene@Eugene:~$ cat test.txt | sort 11 12 17 4 56
Но если мы хотим сравнивать значения чисел, то очевидно, что данный результат некорректный. И в этом случае мы можем использовать флаг -n
:
eugene@Eugene:~$ cat test.txt | sort -n 4 11 12 17 56
Команда cut позволяет получить из структурированного файла определенный кусок информации. Это похоже на работу с таблицами, где мы хотим получить данные определенных столбцов. Данная команда принимает ряд опций, из которых отмечу основные:
-d
: представляет разделитель данных в строке
-f
: представляет список номеров полей для вывода. Список полей можно задать с помощью одного из следующих форматов:
N
: выводит поле с номером N (нумерация начинается с 1)
N-
: определяет диапазон полей, который начинается с номера N и заканчивается последним полем
N-M
: определяет диапазон полей от N до M
-M
: определяет диапазон полей, который начинается с первого поля и заканчивается полем с номером M
Допустим, у нас в домашнем каталоге есть следующий файл test.txt
Tom:39:Microsoft Bob:43:Google Sam:28:Jetbrains Alice:34:Oracle Kate:25:Google
Условно говоря, каждая строка содержит данные пользователя - имя, возраст, компанию, то есть три поля. И каждое поле отделено от других двоеточием. И допустим, нам надо получить имена пользователей:
eugene@Eugene:~$ cut -d : -f 1 test.txt Tom Bob Sam Alice Kate
Здесь опция -d
указывает, что разделитель - двоеточие, а опция -f
указывает, что надо получить 1-е поле.
Выведем 1 и 3 -е поля:
eugene@Eugene:~$ cut -d : -f 1,3 test.txt Tom:Microsoft Bob:Google Sam:Jetbrains Alice:Oracle Kate:Google
Или с 1-го по 2-е поле:
eugene@Eugene:~$ cut -d : -f 1-2 test.txt Tom:39 Bob:43 Sam:28 Alice:34 Kate:25
Также можно применять цепочки преобразований. Например, выведем первые три имени, отсортированные по возрастанию:
eugene@Eugene:~$ cat test.txt | cut -d : -f 1 | sort | head -3 Alice Bob Kate