Linux split file by string

Содержание
  1. How to Split a File of Strings with Awk
  2. The sample file we will be using
  3. Example 1: Use Awk to print all lines of a file
  4. Example 2: Use awk to print only the lines that match a given pattern
  5. Example 3. Use awk to split the file so that only specific fields/columns are printed
  6. Example 4: Use Awk to count and print the number of lines in which a pattern is matched
  7. Example 5: Use awk to print only lines with more than a specific number of characters
  8. Example 6: Use awk to save the command output to another file
  9. Example 7: Use awk to print only non-empty lines from a file
  10. Example 8: Use awk to count the total lines in a file
  11. About the author
  12. Karim Buzdar
  13. 9 полезных примеров команды Split в Linux
  14. Примеры команды Split в Linux
  15. 1. Разделите файлы на несколько файлов
  16. 2. Разделите файлы на несколько файлов с определенными номерами строк
  17. 3. Разделение файлов на n файлов
  18. 4. Разделение файлов с пользовательским префиксом имени
  19. 5. Разделите и укажите длину суффикса
  20. 6. Разделить с помощью числового суффикса заказа
  21. 7. Добавьте шестнадцатеричные суффиксы для разделения файлов
  22. 8. Разделите файлы на несколько файлов определенного размера
  23. 9. Разбивка файлов на несколько с определенным размером файла
  24. Бонусный совет: воссоединение разделенных файлов
  25. Изучаем команды linux: split
  26. 1. Введение
  27. 2. Часто используемые опции
  28. 3. Разрезание файла на части заданного размера
  29. 4. Разрезание файла на заданное количество частей
  30. 5. Использование числовых суффиксов
  31. 6. Восстановление исходного файла
  32. 7. Разрезание архивов tar на лету
  33. 8. Заключение

How to Split a File of Strings with Awk

  • Scan the files, line by line.
  • Split each line into fields/columns.
  • Specify patterns and compare the lines of the file to those patterns
  • Perform various actions on the lines that match a given pattern

In this article, we will explain the basic usage of the awk command and how it can be used to split a file of strings. We have performed the examples from this article on a Debian 10 Buster system but they can be easily replicated on most Linux distros.

The sample file we will be using

The sample file of strings that we will be using in order to demonstrate the usage of the awk command is as follows:

This is what each column of the sample file indicates:

  • The first column contains the name of employees/teachers in a school
  • The second column contains the subject that the employee teaches
  • The third column indicates whether the employee is a professor or assistant professor
  • The fourth column contains the pay of the employee

Example 1: Use Awk to print all lines of a file

Printing each and every line of a specified file is the default behavior of the awk command. In the following syntax of the awk command, we are not specifying any pattern that awk should print, thus the command is supposed to apply the “print” action to all the lines of the file.

In this example, I am telling the awk command to print the contents of my sample file, line by line.

Example 2: Use awk to print only the lines that match a given pattern

With awk, you can specify a pattern and the command will print only the lines matching that pattern.

From the sample file, if I want to print only the line(s) that contain the variable ‘B’, I can use the following command:

To make the example more meaningful, let me print only the information about employees that are ‘professor’s.

The command only prints the lines/entries that contain the string “professor” thus we have more valuable information derived from the data.

Example 3. Use awk to split the file so that only specific fields/columns are printed

Instead of printing the whole file, you can make awk to print only specific columns of the file. Awk treats all words, separated by white space, in a line as a column record by default. It stores the record in a $N variable. Where $1 represents the first word, $2 stores the second word, $3 the fourth, and so on. $0 stores the whole line so the who line is printed, as explained in example 1.

Читайте также:  Windows installer крипто про

The following command will print only the first column(name) and the second column(subject) of my sample file:

Example 4: Use Awk to count and print the number of lines in which a pattern is matched

You can tell awk to count the number of lines in which a specified pattern is matched and then output that ‘count’.

In this example, I want to count the number of persons teaching the subject “english”. Therefore I will tell the awk command to match the pattern “english” and print the number of lines in which this pattern is matched.

The count here suggests that 2 people are teaching english from the sample file records.

Example 5: Use awk to print only lines with more than a specific number of characters

For this task, we will be using the built-in awk function called “length”. This function returns the length of the input string. Thus, if we want awk to print only lines with more than, or even less than, the number of characters, we can use the length function in the following manner:

For printing lines with characters greater than a number:

For printing lines with characters less than a number:

Where n is the number of characters you want to specify for a line.

The following command will print only the lines from my sample file who have characters more than 30:

Example 6: Use awk to save the command output to another file

By using the redirection operator ‘>’, you can use the awk command to print its output to another file. This is the way you can use it:

In this example, I will be using the redirection operator with my awk command to print only the names of the employees(column 1) to a new file:

I verified through the cat commands that the new file only contains the names of the employees.

Example 7: Use awk to print only non-empty lines from a file

Awk has some built-in commands that you can use to filter the output. For example, the NF command is used to keep a count of the fields within the current input record. Here, we will use the NF command to print only the non-empty lines of the file:

Obviously, you can use the following command to print the empty lines:

Example 8: Use awk to count the total lines in a file

Another built-in function called NR keeps a count of the number of input records(usually lines) of a given file. You can use this function in awk as following to count the number of lines in a file:

This was the basic information you need to start with splitting files with the awk command. You can use the combination of these examples to fetch more meaningful information from your file of strings through awk.

About the author

Karim Buzdar

Karim Buzdar holds a degree in telecommunication engineering and holds several sysadmin certifications. As an IT engineer and technical author, he writes for various web sites. He blogs at LinuxWays.

Источник

9 полезных примеров команды Split в Linux

Главное меню » Операционная система Linux » 9 полезных примеров команды Split в Linux

Обратите внимание, что мы не будем отображать вывод напрямую в этих примерах из-за больших размеров файлов. Мы будем использовать команды ll и wc для выделения изменений файла.

Мы советуем вам быстро взглянуть на команду wc, чтобы понять вывод примеров команды split.

Примеры команды Split в Linux

Синтаксис команды Split:

Давайте посмотрим, как использовать его для разделения файлов в Linux.

1. Разделите файлы на несколько файлов

По умолчанию команда split создает новые файлы для каждых 1000 строк. Если префикс не указан, он будет использовать ‘x’. Следующие буквы перечисляют файлы, поэтому сначала идет xaa, затем xab и так далее.

Давайте разделим пример файла журнала:

Если вы используете команду ls, вы можете увидеть несколько новых файлов в вашем каталоге.

Читайте также:  Как убрать общедоступную сеть windows

Вы можете использовать wc для быстрой проверки количества строк после разделения.

Помните, что ранее мы видели, что наш исходный файл содержал 17 170 строк. Таким образом, мы можем видеть, что наша программа создала как и ожидалось, 18 новых файлов. 17 из них заполнены 1000 строками в каждой, а последняя имеет оставшиеся 170 строк.

Другой способ продемонстрировать, что происходит, – запустить команду с параметром verbose. Если вы не знакомы с verbose, вы пропускаете! Он предоставляет более подробные отзывы о том, что делает ваша система, и он доступен для использования со многими командами.

Вы можете увидеть, что происходит с вашей командой на дисплее:

2. Разделите файлы на несколько файлов с определенными номерами строк

Мы понимаем, что вам может не понравиться, что файлы разбиты на файлы по 1000 строк. Вы можете изменить это поведение с помощью опции -l.

Теперь вы можете указать, сколько строк вы хотите в каждом из новых файлов.

Как вы можете догадаться, теперь разделенные файлы имеют по 500 строк каждая, кроме последней.

Теперь у вас есть намного больше файлов, но с половиной строк в каждом.

3. Разделение файлов на n файлов

Опция -n делает разделение на указанное число частей или кусков. Вы можете назначить, сколько файлов вы хотите, добавив целочисленное значение после -n.

Теперь вы можете видеть, что есть 15 новых файлов.

4. Разделение файлов с пользовательским префиксом имени

Что делать, если вы хотите использовать split, но оставить оригинальное имя моего файла или вообще создать новое имя вместо ‘x’?

Возможно, вы помните, что видели префикс как часть синтаксиса, описанного в начале статьи. Вы можете написать свое собственное имя файла после исходного файла.

Вот разделенные файлы с именами, начинающимися с данного префикса.

5. Разделите и укажите длину суффикса

Разделение имеет длину суффикса по умолчанию 2 [aa, ab и т. д.]. Это изменится автоматически при увеличении количества файлов, но если вы хотите изменить его вручную, это тоже возможно. Допустим, вы хотите, чтобы наши файлы были названы как-то вроде AndreyExSeparatedLogFiles.log_aaaab.

Как ты можешь это сделать? Опция -a позволяет нам указать длину суффикса.

И вот разделенные файлы:

6. Разделить с помощью числового суффикса заказа

До этого момента вы видели, что ваши файлы разделены с использованием различных буквенных комбинаций. Лично нам гораздо проще различать файлы по номерам.

Давайте сохраним длину суффикса из предыдущего примера, но изменим алфавитную организацию на числовую с помощью опции -d.

Так что теперь у вас будут разделенные файлы с числовыми значениями.

7. Добавьте шестнадцатеричные суффиксы для разделения файлов

Другой вариант создания суффикса – использовать встроенный шестнадцатеричный суффикс, который чередует упорядоченные буквы и цифры.

В этом примере мы объединяем несколько вещей, которые мы вам уже показали. Мы разделим файл, используя свой собственный префикс и выбрали подчеркивание для удобства чтения.

Мы использовали опцию -x для создания шестнадцатеричного суффикса. Затем разделили наш файл на 50 кусков и дали суффиксу длину 6.

И вот результат вышеупомянутой команды:

8. Разделите файлы на несколько файлов определенного размера

Также возможно использовать размер файла, чтобы разбить файлы в разбивке. Возможно, вам нужно отправить большой файл по сети с ограниченным размером как можно более эффективно. Вы можете указать точный размер для ваших требований.

Синтаксис может стать немного сложнее, так как мы продолжаем добавлять опции. Итак, мы объясним, как работает команда, прежде чем показывать пример.

Если вы хотите создать файлы определенного размера, используйте опцию -b. Затем вы можете написать n K [B], n M [B], n G [B], где n – это значение размера вашего файла, а K [1024] – это -kibi, M – -mebi, G – -gibi и далее. КБ [1000] – килограмм, МБ – мега и т. д.

Может показаться, что многое происходит, но это не так сложно, когда разбиваешь это. Вы указали исходный файл, наш префикс имени файла назначения, числовой суффикс и разделение по размеру файла 128 КБ.

Вот разделенные файлы:

Вы можете проверить результат с помощью команды wc.

9. Разбивка файлов на несколько с определенным размером файла

Если вы хотите разбить файлы примерно на один и тот же размер, но сохранить структуру строк , это может быть лучшим выбором для вас. С помощью -C, вы можете указать максимальный размер. Затем программа автоматически разбивает файлы на основе полных строк.

Читайте также:  Операционная система windows лекция кратко

В выводе вы можете видеть, что первый разделенный файл имеет размер около 1 МБ, тогда как остальная часть файла находится во втором файле.

Бонусный совет: воссоединение разделенных файлов

Это не команда split, но она может быть полезна для новых пользователей.

Вы можете использовать другую команду, чтобы присоединиться к этим файлам и создать копию нашего полного документа. Команда cat – это сокращение от конкатенации, это просто причудливое слово, означающее «объединить элементы вместе». Поскольку все файлы начинаются с буквы «х», звездочка будет применять команду ко всем файлам, которые начинаются с этой буквы.

Как видите, наш воссозданный файл имеет тот же размер, что и наш оригинал.

Наше форматирование (включая количество строк) сохраняется в созданном файле.

Если вы новичок в Linux, мы надеемся, что это руководство помогло вам понять команду split. Если вы более опытны, расскажите нам ваш любимый способ использовать разделение в комментариях ниже!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Изучаем команды linux: split

1. Введение

Если вы не слышали о команде split, вы многое потеряли. Как можно понять из ее названия, эта команда может помочь вам разделить файл на несколько меньших файлов. split работает с любыми файлами, как текстовыми, так и бинарными. Это очень полезно, если ваш файл не помещается на флешку, или вам нужно отправить большой файл по электронной почте. Вы также можете разделять большие текстовые файлы, такие как логи, на несколько частей заданного размера. В данной статье описан синтакис и применение команды split.

2. Часто используемые опции

-b, —bytes=SIZE
Эта опция задает размер выводимых файлов.
-d, —numeric-suffixes
использовать цифровые суффиксы вместо алфавитных
-n, —number=CHUNKS
задает количество выводимых файлов

3. Разрезание файла на части заданного размера

Если не используется опция suffix, по умолчанию команда split будет разделять файлы на части, название которых будет начинаться с x, за которым будут следовать еще два символа в алфавитном порядке. Например, первый файл будет называться xaa, за которым будет идти xab, xac, а последний файл будет называться xzz. Это значит, что в данном случае вы можете разбить свой файл не более чем на 676 частей (26×26). Возьмем для примера файл размером 10 Мб:

Теперь мы можем разбить этот файл на части размером 1 Мб с помощью опции -b:

4. Разрезание файла на заданное количество частей

Также может возникнуть ситуация, когда нам нужно разбить файл на определенное количество частей. В приведенном ниже примере мы разрезаем наш файл размером 10 Мб на максимум три части с помощью опции -n:

5. Использование числовых суффиксов

Команда split позволяет создавать файлы с числовыми суффиксами вместо символьных. Приведенная ниже команда создает файл для каждого символа в строке «linuxcareer.com». Секрет заключается в том, что мы разрезаем файл, задавая размер части в байтах, а 1 байт эквивалентен 1 символу. Также вместо символьных мы используем числовые суффиксы:

6. Восстановление исходного файла

Разрезать файл легко, но как собрать его обратно? Допустим, у нас есть какой-либо ISO-образ, и мы хотим разделить его пополам.

Теперь мы разрезаем образ пополам с помощью опции -n:

Мы можем восстановить исходный файл ubuntu-12.04.1-server-amd64.iso, используя команду cat и оператор перенаправления STDOUT:

Чтобы убедиться, что файл restored-ubuntu-12.04.1-server-amd64.iso восстановлен корректно и представляет собой точную копию оригинального файла ubuntu-12.04.1-server-amd64.iso, мы используем команду md5sum для создания контрольной суммы обоих файлов:

Как вы можете видеть, восстановленный файл является точной копией исходного, так как их контрольные суммы совпадают.

7. Разрезание архивов tar на лету

Теперь, когда мы ознакомились с основами, рассмотрим более сложный пример.
В приведенном ниже примере мы архивируем директорию /tmp/Software. Однако вместо создания архива мы разрежем его на лету с помощью команды split.

Как вы можете видеть, наш архив диретории /tmp/Software разрезан на части с максимальным размером 2 Мб. Далее мы восстановим исходную директорию:

8. Заключение

Как вы можете видеть, при использовании операционной системы GNU/Linux вы ограничены только своим воображением и навыками, а не размером вашего кошелька. В данной статье описаны только основы работы с командой split. Узнать больше вы можете с помощью команды:

Источник

Оцените статью