Щоразу, коли вам потрібно працювати зі списками, які зберігаються як текстові файли в Linux, особливо з довгими, ви можете скористатися деякими простими командами, щоб полегшити роботу з ними.
Будь-який текстовий файл можна легко відсортувати, але ви також можете довільно впорядкувати рядки, пронумерувати їх або об’єднати файли, коли два мають спільні початкові поля. Насправді, якщо ви хочете бачити лише кожен другий рядок або кожен п’ятий рядок у файлі, то також можете це зробити. У наведеному дописі Network World описано команди для виконання усіх цих дій.
Команда sort робить сортування текстових файлів дуже легким. Щоб переглянути вміст текстового файлу в порядку сортування, все, що вам потрібно зробити, це ввести таку команду:
$ sort myfile
Якщо ви хочете зберегти результат або додати його до кінця іншого файлу, одна з наведених нижче команд зробить це за вас.
$ sort myfile > sortedfile
$ sort myfile >> otherfile
Після додавання рядків до наявного файлу, як показано у другій команді вище, вам може знадобитися відсортувати його знову. Наведені нижче команди зроблять це за вас і гарантують, що файл має оригінальну назву.
$ sort otherfile > otherfile.new
$ mv otherfile.new otherfile
Команда sort також має досить багато параметрів. Наприклад, якщо у вас є файл із датами в алфавітному порядку, то можна перейти до відображення його в порядку річних дат за допомогою параметра -M у команді праворуч нижче:
$ cat birthdays $ sort -M birthdays
Jan 4, 1972 Jan 4, 1972
Mar 18, 1949 Jan 8, 1954
May 1, 1976 Mar 18, 1949
Jan 8, 1954 May 1, 1976
Sep 23, 1979 Aug 6, 1956
Aug 6, 1956 Sep 23, 1979
Щоб відсортувати довгий список кольорів і відобразити їх у стовпцях, скористайтеся такою командою:
$ sort colors | column
Aqua Brown Gold Navy blue Purple Tomato Yellow
Azure Chocolate Green Navy blue Red Turquoise
Black Cyan Grey Olive Salmon Violet
Blue Cyan Lime Orange Sİlver Wheat
Bronze Dark blue Maroon Pink
Щоб довільно розташувати рядки в текстовому файлі, використовуйте команду shuf (перемішувати). Наприклад, якщо ви хочете щомісяця перетасовувати список друзів, щоб випадковим чином вибрати, кого з них запросити на обід, то можете використати таку команду:
$ shuf friends | head -2
Sam
Patty
Виконайте команду кілька разів поспіль, і кожного разу ви повинні отримати інший список.
Якщо бажаєте відсортувати рядки файлу за числом (припустимо, що вони не вказані за числом), скористайтеся параметром sort -n. Однак пам’ятайте, що будь-які рядки, які не починаються з числа, з’являться першими.
$ sort -n story | head -5
1 Once upon a time
2 There was a Linux elf
3 who liked to surprise
4 users by introducing
5 new commands.
Команда awk дає змогу переглядати кожен другий, третій, четвертий або N-й рядок у файлі за допомогою аргументу NR (номер запису), як показано у командах нижче.
Перша команда забезпечує відображення лише 2-го, 4-го, 6-го тощо рядків. Другий буде відображати кожен 7-й рядок. Подумайте про перше як про те, що якщо номер рядка, поділений на 2, залишає залишок 0, тоді відобразіть його.
$ awk 'NR % 2 == 0' filename
$ awk ‘NR % 7 == 0’ filename
Ось два приклади: в одному відображається кожен другий рядок, а в іншому – кожен третій рядок файлу. Файл, який використовується, має пронумеровані рядки, щоб було зрозуміліше, що відбувається.
$ awk 'NR % 2 == 0' myfile | head -6
2 There was a Linux elf
4 users by introducing
6
8 didn't know much about
10 line. As a result, none
12 tried actually worked
$ awk 'NR % 3 == 0' myfile | head -6
3 who liked to surprise
6
9 working on the command
12 tried actually worked
15 That's all we know about
18 command "cheat sheet" and
Щоб зробити те саме зі списком кольорів, вихідні рядки не будуть пронумеровані. Ця команда відображає 13-й і 26-й рядки у файлі кольорів.
$ awk 'NR % 13 == 0' colors
Turquoise
Chocolate
Щоб пронумерувати рядки у текстовому файлі, використовуйте команду nl (number lines). У наведеному нижче прикладі команда додає номери рядків до файлу кольорів.
$ nl colors
1 Black
2 Grey
3 Red
4 Blue
5 Orange
6 White
7 Brown
8 Pink
9 Yellow
10 Green
11 Purple
12 Maroon
13 Turquoise
14 Cyan
15 Navy blue
16 Gold
17 Tomato
18 Teal
19 Lime
20 Cyan
21 Wheat
22 Salmon
23 Olive
24 Aqua
25 Violet
26 Chocolate
27 Azure
28 Sİlver
29 Bronze
30 Dark blue
31 Navy blue
Як бачите, Linux надає багато зручних команд для керування вмістом текстових файлів. Використовуйте команди, надані у цьому матеріалі.
Також читайте на ProIT: Сила символів >, >>, &, && та || на Linux.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодну публікацію!