Манипуляции с тестовым файлом

Последнее обновление: 12.03.2024

Команда 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. Получение определенной информации

Команда 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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850