The book of Magnus

IT-заметки и знания

Поиск данных в файлах встроенными средствами

Tags = [ Linux, Linux_utils ]

Часто возникает необходимость прочитать файл, или найти какую-нибудь информацию, которая неизвестно где лежит, а из инструментов под рукой только консоль. Но суть как раз в том, что консоль даёт куда больше возможностей для поиска и обработки нужной информации, чем любой GUI, а ещё все эти возможности можно легко использовать в скриптах.

Сегодня рассмотрим основные программы для поиска файлов (find) и просмотра содержимого директорий (ls), чтения файлов (cat, tac, less, more, head, tail), парсинга и обработка данных (grep, awk, sed, cut, uniq, sort, tr, paste), а также посмотрим на современные аналоги классических программ. Представленные ниже программы имеют широкие возможности и, не смотря на большой объём текста, описаны они далеко не все. Так что все данные о программе можно получить с помощью --help, info и man.

Поиск

find

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

Основные параметры и опции команды

  1. Поиск по имени
  • -name: Поиск файлов или каталогов по имени. Поддерживает подстановочные знаки (wildcards).
    find /путь/к/директории -name "имя_файла"
    find /путь/к/директории -name "*.txt"
    
  • -iname: Поиск файлов или каталогов по имени, игнорируя регистр.
    find /путь/к/директории -iname "имя_файла"
    find /путь/к/директории -iname "*.TXT"
    
  1. Поиск по типу
  • -type: Поиск файлов по типу. Например, f для файлов, d для директорий.
    find /путь/к/директории -type f
    find /путь/к/директории -type d
    
  1. Поиск по размеру
  • -size: Поиск файлов по размеру. Можно указать размеры в байтах (по умолчанию), килобайтах (k), мегабайтах (M), гигабайтах (G).
    find /путь/к/директории -size +100M  # Файлы больше 100 МБ
    find /путь/к/директории -size -10k   # Файлы меньше 10 КБ
    
  1. Поиск по времени
  • -mtime: Поиск файлов, измененных определенное количество дней назад. +n для больше чем n дней, -n для меньше чем n дней.
    find /путь/к/директории -mtime +7    # Измененные более 7 дней назад
    find /путь/к/директории -mtime -7    # Измененные менее 7 дней назад
    
  • -newermt: Поиск файлов, измененных после определенной даты (в формате YYYY-MM-DD).
    find /путь/к/директории -newermt 2024-01-01
    
  • -newermt и ! -newermt можно использовать для поиска файлов, измененных до или после определенной даты.
    find /путь/к/директории ! -newermt 2024-08-01 ! -newermt 2024-09-01
    
  1. Поиск по владельцу и группе
  • -user: Поиск файлов, принадлежащих определенному пользователю.
    find /путь/к/директории -user имя_пользователя
    
  • -group: Поиск файлов, принадлежащих определенной группе.
    find /путь/к/директории -group имя_группы
    
  1. Поиск по правам доступа
  • -perm: Поиск файлов с определенными правами доступа.
    find /путь/к/директории -perm 644
    
  1. Поиск и выполнение команд
  • -exec: Выполнение команды для каждого найденного файла. Команда должна заканчиваться \;.
    find /путь/к/директории -type f -name "*.tmp" -exec rm {} \;
    
  • -print: Печать имени файла. Это стандартное поведение, но его можно явно указать.
    find /путь/к/директории -type f -print
    

Примеры использования

  1. Найти все .log файлы в /var/log и удалить их:
    find /var/log -type f -name "*.log" -exec rm {} \;
    
  2. Найти все файлы, измененные в последние 30 дней:
    find /путь/к/директории -type f -mtime -30
    
  3. Найти все файлы, которые не были изменены в течение последних 60 дней:
    find /путь/к/директории -type f -mtime +60
    
  4. Найти все .jpg файлы, которые принадлежат пользователю john:
    find /путь/к/директории -type f -name "*.jpg" -user john
    
  5. Найти все файлы, измененные вне августа 2024 года:
find /путь/к/test -type f ! -newermt 2024-08-01 ! -newermt 2024-09-01

ls

Используется для отображения списка файлов и директорий в текущем каталоге или в указанном каталоге. Это одна из самых часто используемых команд в командной строке и обладает множеством опций, которые позволяют настраивать вывод в соответствии с потребностями пользователя.

Основной синтаксис

ls [опции] [файлы/директории]
  • Без опций: По умолчанию ls отображает имена файлов и директорий в текущем каталоге.
  • С опциями: Команда ls поддерживает различные опции для изменения формата вывода.

Полезные опции

  • -a или --all: Показывает все файлы, включая скрытые (файлы, имена которых начинаются с точки).
  • -l: Выводит подробный список файлов и директорий, включая права доступа, владельца, размер и дату последнего изменения.
  • -h (вместе с -l): Форматирует размеры файлов в удобочитаемом виде (например, 1K, 234M).
  • -R или --recursive: Рекурсивно отображает содержимое всех поддиректорий.
  • -t: Сортирует файлы по времени последнего изменения, от самого нового к старому.
  • -S: Сортирует файлы по размеру, от самого большого к самому маленькому.
  • -r или --reverse: Переворачивает порядок сортировки.

Примеры использования

  1. Просмотр содержимого текущего каталога:
ls
  1. Просмотр содержимого каталога /home/user:

ls /home/user

3. **Вывод всех файлов, включая скрытые, в подробном формате**:
```bash
ls -la
  1. Просмотр файлов и директорий в текущем каталоге, сортированных по времени последнего изменения:
 ls -lt
  1. Просмотр содержимого каталога и всех его поддиректорий:
 ls -R

Просмотр содержимого файлов

cat

Одна из самых простых и часто используемых команд для работы с текстовыми файлами. Она предназначена для вывода содержимого одного или нескольких файлов на стандартный вывод (обычно на экран). Основные возможности и параметры cat следующие:

Основное использование

  1. Вывод содержимого файла:

    cat filename.txt
    

    Эта команда выведет содержимое filename.txt на экран.

  2. Вывод содержимого нескольких файлов:

    cat file1.txt file2.txt
    

    Эта команда выведет содержимое file1.txt и file2.txt последовательно

  3. Создание нового файла или добавление текста в существующий:

    cat > newfile.txt
    

    После выполнения команды вы можете вводить текст, который будет записан в файл newfile.txt. Для завершения ввода нажмите Ctrl+D.

    Если файл newfile.txt уже существует, его содержимое будет заменено новым текстом.

    Чтобы добавить текст в конец существующего файла, используйте:

    cat >> existingfile.txt
    

    Здесь также можно вводить текст, а затем завершить ввод с помощью Ctrl+D.

Полезные опции

  1. Нумерация строк:
    • Выводит содержимое файла с нумерацией строк.
    cat -n filename.txt
    
  2. Показать скрытые символы:
    • Эта опция показывает символы табуляции как ^I и символы конца строки как $.
    cat -A filename.txt
    
  3. Сокращение последовательных пустых строк:
    • Объединяет несколько последовательных пустых строк в одну.
    cat -s filename.txt
    
  4. Отображение табуляции как ^I:
    • Позволяет визуально видеть табуляцию в выводе.
    cat -T filename.txt
    

Примеры использования

  1. Создание файла из нескольких других файлов:
    cat file1.txt file2.txt > combined.txt
    
    Эта команда объединит содержимое file1.txt и file2.txt и запишет его в combined.txt.
  2. Просмотр файла с нумерацией строк и отображением скрытых символов:
    cat -n -A filename.txt
    

tac

Команда tac в Linux является своеобразным обратным аналогом команды cat. Она выводит содержимое файлов в обратном порядке, начиная с последней строки и заканчивая первой. Название команды tac происходит от слова cat, написанного наоборот, что отражает её основную функцию.

Основные возможности

  1. Вывод файла в обратном порядке:
    • По умолчанию, tac выводит содержимое файла построчно, начиная с последней строки и заканчивая первой.
    • Пример:
 tac filename.txt
  • Эта команда выведет содержимое файла filename.txt в обратном порядке.
  1. Работа с несколькими файлами:
    • Если указать несколько файлов, tac выведет содержимое каждого файла в обратном порядке, а затем объединит их также в обратном порядке.
    • Пример:
tac file1.txt file2.txt
  • В этом случае tac сначала выведет строки из file2.txt в обратном порядке, а затем строки из file1.txt также в обратном порядке.
  1. Использование с потоками данных:
    • tac может принимать данные из стандартного ввода, что позволяет использовать её в пайпах.
    • Пример:
echo -e "first line\nsecond line\nthird line" | tac
  • Эта команда выведет:
 third line
 second line
 first line

Полезные опции

  1. Опция -s (separator):
    • По умолчанию tac считает строкой всё, что заканчивается символом новой строки \n. Опция -s позволяет задать другой разделитель строк, например, точку или запятую.
    • Пример: вывод содержимого файла, разделенного точками:
tac -s "." filename.txt
  • В этом случае tac разделит строки файла по точкам и выведет их в обратном порядке.
  1. Опция -b (before separator):
    • Эта опция используется с -s и заставляет tac включать разделитель в начало строки, а не в её конец (по умолчанию разделитель включается в конец строки).
    • Пример:
  echo "apple,banana,cherry" | tac -s "," -b
  • Вывод:
,cherry,bananaapple
  1. Опция -r (regex):
    • Используется для указания регулярного выражения в качестве разделителя строк.
    • Пример: использование чисел в качестве разделителей:
 echo "abc123def456ghi789jkl" | tac -r -s "[0-9]+"
  • Эта команда разделит текст по числам и выведет его части в обратном порядке.

Примеры использования

  1. Простое использование tac:
    tac filename.txt
    
    Вывод содержимого файла filename.txt в обратном порядке.
  2. Вывод содержимого нескольких файлов в обратном порядке:
    tac file1.txt file2.txt
    
    Сначала выводит строки из file2.txt в обратном порядке, затем строки из file1.txt в обратном порядке.
  3. Использование разделителя вместо новой строки:
    echo "one.two.three" | tac -s "."
    
    Выводит:
    three.two.one
    
  4. Обратный порядок строк с определенным шаблоном:
    echo "apple,banana,cherry" | tac -s ","
    
    Выводит:
    cherry,banana,apple
    

less

Команда less в Linux предлагает довольно мощные и гибкие возможности поиска, которые делают её удобным инструментом для работы с текстовыми файлами, особенно если нужно искать и просматривать текстовые данные.

Основные особенности

  1. Постраничный просмотр:
    • В отличие от cat, которая выводит весь файл сразу, less выводит содержимое файла постранично. Вы можете перемещаться по файлу, что делает его более удобным для чтения больших файлов.
  2. Управление просмотром:
    • Вы можете прокручивать текст вверх и вниз, используя клавиши со стрелками, Page Up, Page Down, или клавиши j и k.
    • Для выхода из режима просмотра нажмите q.
  3. Поиск внутри файла:
    • less позволяет искать текст внутри файла. Чтобы начать поиск, нажмите / и введите поисковый запрос. Для поиска следующего совпадения нажмите n, для предыдущего — N.
    • Поиск чувствителен к регистру по умолчанию, но вы можете сделать его нечувствительным, добавив -I перед командой less или используя / в командном режиме.
  4. Работа с несколькими файлами:
    • Вы можете открыть несколько файлов одновременно, передавая их как аргументы:
less file1.txt file2.txt
  • Для перехода между файлами используйте :n (next) и :p (previous).

Полезные опции

  1. Опция -N — показывает нумерацию строк:
    less -N filename.txt
    
  2. Опция -S — отключает автоматическое перенесение длинных строк:
    • По умолчанию длинные строки переносятся на следующую строку. Используя -S, можно отключить это поведение, и тогда строки будут прокручиваться горизонтально.
    less -S filename.txt
    
  3. Опция -i — делает поиск нечувствительным к регистру:
    • Включает нечувствительный к регистру поиск.
    less -i filename.txt
    
  4. Опция -r — корректное отображение управляющих символов:
    • Позволяет правильно отображать цветные тексты и другие управляющие символы.
    less -r filename.txt
    
  5. Просмотр данных, поступающих в реальном времени:
    • Команда less поддерживает работу с пайпами и может отображать данные в реальном времени, если запустить её с опцией +F. Это полезно, например, для просмотра логов.
    tail -f /var/log/syslog | less +F
    

Управление просмотром

  • Стрелки вверх/вниз: перемещение по тексту на одну строку.
  • Page Up / Page Down: перемещение по тексту на одну страницу.
  • G: переход в конец файла.
  • g: переход в начало файла.
  • /текст: поиск текста.
  • n: перейти к следующему совпадению.
  • N: перейти к предыдущему совпадению.
  • q: выход из less.

Примеры использования

  1. Открытие большого файла:
    less /var/log/syslog
    
    Этот пример полезен для просмотра логов, где важна возможность перемещения по файлу без загрузки его полностью в память.
  2. Просмотр с нумерацией строк и отключением переноса строк:
    less -N -S filename.txt
    
  3. Просмотр вывода другой команды:
    • Используя пайпы, можно просмотреть вывод любой команды через less:
ps aux | less

Помимо просмотра содержимого файла, less предоставляет гибкие возможности поиска по содержимому

  1. Простой поиск вперед:
    • Чтобы начать поиск текста вперед по файлу, нажмите /, а затем введите текст, который вы хотите найти, и нажмите Enter.
    • Пример:
 /text_to_find
  • less найдет первое вхождение указанного текста и перейдет к нему.
  1. Простой поиск назад:
    • Для поиска текста назад (к предыдущим строкам) используйте ?, а затем введите текст, который вы хотите найти, и нажмите Enter.
    • Пример:
?text_to_find
  • less будет искать текст в обратном направлении, начиная с текущего положения.
  1. Переход к следующему или предыдущему совпадению:
    • После выполнения поиска с помощью / или ?, вы можете перейти к следующему совпадению, нажав n (next).
    • Чтобы перейти к предыдущему совпадению, нажмите N (предыдущее совпадение).
    • Пример: если вы искали /error, то нажав n, вы перейдете к следующему вхождению слова "error".
  2. Поиск с игнорированием регистра:
    • Чтобы искать текст, игнорируя регистр, запустите less с опцией -I:
 less -I filename.txt
  • В режиме поиска регистр будет игнорироваться, и Error, error, и ERROR будут считаться одинаковыми.
  1. Повтор последнего поиска:
    • Если вы уже выполнили поиск и хотите повторить его, просто нажмите / и затем Enter (или ? и Enter для поиска в обратном направлении).
  2. Отображение совпадений при поиске:
    • При выполнении поиска, less автоматически перемещает экран к первой строке, содержащей совпадение, и подсвечивает это совпадение, что облегчает его обнаружение.

Расширенные возможности поиска

  1. Поиск с регулярными выражениями:
    • less поддерживает использование регулярных выражений в поисковых запросах, что позволяет искать более сложные паттерны текста.
    • Пример: поиск строки, начинающейся с "Error":
 /^Error
  1. Поиск в определенных строках:
    • Вы можете ограничить поиск только определенными строками с помощью регулярных выражений.
    • Пример: поиск строк, заканчивающихся на "end":
/end$
  1. Поиск с учетом регистра:
    • Если вы хотите, чтобы поиск был чувствителен к регистру (например, чтобы находить только Error и игнорировать error), используйте опцию -I, чтобы отключить игнорирование регистра.

more

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

Основные особенности

  1. Постраничный просмотр:
    • В отличие от cat, которая выводит весь файл сразу, more показывает содержимое файла по одной странице за раз, что удобно для чтения больших текстов.
  2. Простота использования:
    • Интерфейс more минималистичен и прост в использовании, хотя и менее функционален по сравнению с командой less.
  3. Минимальные требования к ресурсам:
    • more загружает файл постранично, что делает его экономичным с точки зрения использования памяти и процессора, особенно на слабых системах.

Основные команды и навигация

  1. Просмотр файла с помощью more:
    more filename.txt
    
    Эта команда откроет файл filename.txt и покажет его первую страницу.
  2. Навигация по файлу:
    • Пробел: переход к следующей странице.
    • Enter: переход на одну строку вниз.
    • b: возврат на одну страницу назад.
    • /строка: поиск строки в тексте.
    • n: перейти к следующему совпадению при поиске.
    • q: выход из more.
  3. Просмотр нескольких файлов:
    • Вы можете передать несколько файлов в команду more, и она покажет их последовательно:
more file1.txt file2.txt
  • После окончания одного файла more автоматически перейдет к следующему.
  1. Просмотр данных из пайпа:
    • more можно использовать для постраничного просмотра вывода других команд:
    ps aux | more
    
    • В этом примере вывод команды ps aux (список процессов) будет отображаться постранично.

Полезные опции

  1. Опция -d:
    • Показ подсказок для пользователя (например, "[Press space to continue, 'q' to quit.]").
    more -d filename.txt
    
  2. Опция -c:
    • Полностью очищает экран перед показом новой страницы, предотвращая прокрутку.
    more -c filename.txt
    
  3. Опция -s:
    • Сокращает последовательные пустые строки до одной, что помогает упростить чтение файлов с множеством пустых строк.
    more -s filename.txt
    
  4. Опция +n:
    • Начинает просмотр с определенной строки n.
    more +20 filename.txt
    

Примеры использования

  1. Просмотр файла с подсказками:
    more -d filename.txt
    
    В этом случае more будет показывать подсказки, что полезно для новых пользователей.
  2. Просмотр длинного вывода команды:
    ls -l /var/log | more
    
    Эта команда покажет длинный список файлов в директории /var/log постранично.
  3. Просмотр файла, начиная с определенной строки:
    more +50 filename.txt
    
    Этот пример откроет файл filename.txt, начиная с 50-й строки.

Ограничения more

  • Не поддерживает обратную прокрутку: В отличие от less, команда more не позволяет прокручивать текст назад, что может быть неудобно при просмотре больших файлов.
  • Ограниченные возможности поиска: more поддерживает простой поиск, но без продвинутых опций, доступных в less.

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

Основные команды и навигация

  1. Вывод первых 10 строк:
    • По умолчанию, head выводит первые 10 строк файла.
    • Пример:
 head filename.txt
  • Эта команда выведет первые 10 строк файла filename.txt.
  1. Вывод определенного количества строк:
    • Можно указать, сколько строк нужно вывести, с помощью опции -n.
    • Пример: чтобы вывести первые 20 строк файла:
 head -n 20 filename.txt
  1. Вывод первых N байтов файла:
    • Вместо строк можно вывести первые N байтов файла, используя опцию -c.
    • Пример: чтобы вывести первые 50 байтов файла:
head -c 50 filename.txt
  1. Вывод из нескольких файлов:
    • head может работать с несколькими файлами одновременно, выводя указанное количество строк для каждого файла.
    • Пример:
 head -n 5 file1.txt file2.txt
  • В этом случае head выведет по 5 строк из каждого файла, причем перед выводом каждой группы строк будет указано имя файла.

Полезные опции

  1. Опция -q (quiet, silent):
    • Эта опция подавляет вывод имен файлов, когда вы используете head для нескольких файлов.
    • Пример:
head -q -n 5 file1.txt file2.txt
  • В этом случае head выведет по 5 строк из каждого файла, но не будет отображать имена файлов.
  1. Опция -v (verbose):
    • Напротив, эта опция заставляет head всегда выводить имена файлов, даже если обрабатывается только один файл.
    • Пример:
 head -v -n 5 filename.txt
  • Это может быть полезно при использовании head в скриптах для явного указания, откуда взяты данные.
  1. Комбинация с другими командами:
    • head можно использовать в комбинации с другими командами через пайпы.
    • Пример: просмотр первых 10 процессов, отсортированных по использованию памяти:
ps aux --sort=-%mem | head
  1. Использование с отрицательными значениями:
    • Вы можете использовать отрицательные значения с опцией -n, чтобы исключить последние строки из вывода.
    • Пример: исключение последних 5 строк, вывод всех остальных:
 head -n -5 filename.txt

Примеры использования

  1. Вывод первых 3 строк файла:
    head -n 3 filename.txt
    
    Выводит только первые 3 строки файла.
  2. Вывод первых 100 байтов файла:
    head -c 100 filename.txt
    
    Выводит первые 100 байтов из файла filename.txt.
  3. Просмотр первых строк нескольких файлов:
    head -n 5 file1.txt file2.txt
    
    Выводит по 5 строк из файлов file1.txt и file2.txt, включая имена файлов в выводе.
  4. Первые 10 строк процесса вывода команды ls:
    ls -l | head
    
    Выводит первые 10 строк, полученные от команды ls -l.

tail

tail очень похожа на head с той лишь разницей, что она работает с конца файла. Команда tail в Linux используется для вывода последних строк из файла или потока данных. Она особенно полезна при просмотре логов, где важны последние записи, или при мониторинге файлов в реальном времени. Ниже приведены основные возможности, примеры использования и полезные опции команды tail.

Основные возможности

  1. Вывод последних 10 строк:
    • По умолчанию, tail выводит последние 10 строк файла.
    • Пример:
 tail filename.txt
  • Эта команда выведет последние 10 строк файла filename.txt.
  1. Вывод определенного количества строк:
    • Можно указать, сколько строк нужно вывести, используя опцию -n.
    • Пример: чтобы вывести последние 20 строк файла:
    tail -n 20 filename.txt
    
  2. Вывод последних N байтов файла:
    • Вместо строк можно вывести последние N байтов файла с помощью опции -c.
    • Пример: чтобы вывести последние 50 байтов файла:
 tail -c 50 filename.txt
  1. Вывод из нескольких файлов:
    • tail может работать с несколькими файлами одновременно, выводя последние строки для каждого файла.
    • Пример:
    tail -n 5 file1.txt file2.txt
    
    • В этом случае tail выведет по 5 последних строк из каждого файла.

Полезные опции

  1. Опция -f (follow):
    • Эта опция позволяет tail оставаться активным и постоянно обновлять вывод, отображая новые строки по мере их добавления в файл.
    • Пример: мониторинг лога в реальном времени:
 tail -f /var/log/syslog
  • tail -f полезен для мониторинга файлов журналов, так как он позволяет наблюдать за новыми записями в реальном времени.
  1. Опция --retry:
    • В сочетании с -f, эта опция позволяет tail продолжать попытки открыть файл, если он временно недоступен (например, если файл создается или монтируется позже).
    • Пример:
tail -f --retry filename.txt
  1. Опция -s (sleep interval):
    • Можно задать интервал обновления (в секундах) для режима -f. По умолчанию tail проверяет файл каждые 1 секунду, но с этой опцией можно изменить этот интервал.
    • Пример:
    tail -f -s 5 /var/log/syslog
    
    • В этом примере tail обновляет вывод каждые 5 секунд.
  2. Опция -q (quiet, silent):
    • Отключает вывод имени файла при выводе нескольких файлов.
    • Пример:
 tail -q -n 5 file1.txt file2.txt
  • В этом случае tail выведет последние 5 строк из каждого файла, но не будет отображать имена файлов.
  1. Опция -v (verbose):
    • Принудительный вывод имени файла перед его содержимым, даже если обрабатывается только один файл.
    • Пример:
 tail -v -n 5 filename.txt

Расширенные возможности

  1. Комбинация с другими командами:
    • tail можно использовать в пайпах для работы с выводом других команд.
    • Пример: вывод последних 10 процессов, отсортированных по времени:
  ps -eo pid,etime,cmd --sort=-etime | tail
  1. Отрицательные значения с опцией -n:
    • Вы можете использовать отрицательные значения с опцией -n, чтобы исключить последние строки из вывода.
    • Пример: исключение последних 5 строк, вывод всех остальных:
tail -n +5 filename.txt
  1. Команда tail с -F:
    • Это расширение опции -f, которая автоматически перемонтирует файл, если он переименован или заменен (часто используется с логами).
    • Пример:
tail -F /var/log/syslog

Примеры использования

  1. Мониторинг системного журнала в реальном времени:
    tail -f /var/log/syslog
    
    Эта команда непрерывно обновляет вывод последними строками журнала, что полезно для отслеживания событий на сервере в реальном времени.
  2. Просмотр последних 50 байтов файла:
    tail -c 50 filename.txt
    
    Выводит последние 50 байтов файла filename.txt.
  3. Вывод последних строк нескольких файлов:
    tail -n 5 file1.txt file2.txt
    
    Выводит по 5 последних строк из файлов file1.txt и file2.txt.
  4. Мониторинг файла с пользовательским интервалом обновления:
    tail -f -s 2 filename.txt
    
    Эта команда обновляет вывод каждые 2 секунды.

Парсинг и обработка данных

grep

Утилита командной строки в Unix-подобных операционных системах, используемая для поиска строк, содержащих заданный шаблон, в текстовых файлах или в стандартном вводе. Название grep происходит от "global regular expression print", что отражает её основное предназначение.

Основные возможности

  1. Поиск строк по шаблону: grep ищет строки, соответствующие регулярному выражению, и выводит их.
  2. Регулярные выражения: grep поддерживает регулярные выражения, что позволяет делать более сложные запросы. Есть три режима регулярных выражений:
    • Обычные выражения (Basic Regular Expressions, BRE) — используется по умолчанию.
    • Расширенные выражения (Extended Regular Expressions, ERE) — для использования расширенных регулярных выражений, можно использовать флаг -E.
    • Perl-совместимые регулярные выражения (Perl Compatible Regular Expressions, PCRE) — с использованием флага -P.
  3. Рекурсивный поиск: Можно искать в директориях, включая поддиректории, используя флаг -r или -R.
  4. Игнорирование регистра: С помощью флага -i можно игнорировать регистр при поиске.
  5. Вывод номера строки: С помощью флага -n можно вывести номера строк вместе с совпадениями.
  6. Подсчет совпадений: С помощью флага -c можно подсчитать количество строк, которые соответствуют шаблону.
  7. Вывод только совпадимого текста: С помощью флага -o можно выводить только совпадающую часть текста, а не всю строку.

Примеры использования

  1. Поиск строки в файле:
    grep "pattern" filename
    
    Найдет все строки в файле filename, содержащие pattern.
  2. Поиск без учета регистра:
    grep -i "pattern" filename
    
    Найдет все строки в файле filename, содержащие pattern, игнорируя регистр.
  3. Поиск с выводом номера строки:
    grep -n "pattern" filename
    
    Выведет номера строк вместе с совпадениями.
  4. Поиск в нескольких файлах:
    grep "pattern" file1 file2 file3
    
    Найдет строки, содержащие pattern, в файлах file1, file2, file3.
  5. Поиск в поддиректориях:
    grep -r "pattern" directory/
    
    Выполнит рекурсивный поиск по всем файлам в директории directory и её поддиректориях.
  6. Поиск и подсчет совпадений:
    grep -c "pattern" filename
    
    Выведет количество строк, содержащих pattern.
  7. Поиск с использованием регулярных выражений:
    grep -E "pattern[0-9]+" filename
    
    Найдет строки в filename, содержащие pattern, за которым следует одно или более цифр.
  8. Поиск только совпадающей части текста:
    grep -o "pattern" filename
    
    Выведет только совпадающие фрагменты pattern, а не всю строку.
  9. Поиск строк, не содержащих определённое слово:
   grep -v "error" example.txt

Полезные флаги и опции

  • -l — вывести только имена файлов, содержащих совпадения.
  • -L — вывести только имена файлов, не содержащих совпадения.

awk

Мощный инструмент для обработки текстовых данных в Unix-подобных системах, который часто используется для анализа и манипуляции текстовыми файлами и потоками данных. Он берет свое название от первых букв фамилий его разработчиков — Alfred Aho, Peter Weinberger и Brian Kernighan.

Основные возможности

  1. Обработка и анализ текстов: awk предназначен для обработки и анализа текстовых файлов и потоков данных. Он может выполнять операции над текстом, такие как фильтрация, преобразование и форматирование данных.
  2. Работа с полями и строками: awk работает с текстовыми строками, разбивая их на поля и строки. По умолчанию поля разделяются пробелами или табуляциями, но это можно изменить.
  3. Поддержка регулярных выражений: awk поддерживает регулярные выражения для поиска и манипуляции текстом.
  4. Встроенные функции и переменные: awk предоставляет множество встроенных функций и переменных для работы с текстом, числами и форматированием.

Основной синтаксис

Основной синтаксис awk выглядит следующим образом:

awk 'pattern { action }' filename

Здесь pattern — это шаблон или условие, а action — это действие, которое выполняется, если строка соответствует шаблону. Действие может быть любым набором команд awk.

Примеры использования

  1. Вывод всех строк файла: Если вы хотите просто вывести все строки файла, можно использовать awk без шаблона:
    awk '{ print }' filename
    
  2. Вывод определенного поля: Например, чтобы вывести только первое поле (по умолчанию поля разделяются пробелами или табуляцией):
    awk '{ print $1 }' filename
    
    Здесь $1 обозначает первое поле. $2 — второе поле и так далее.
  3. Вывод строк, содержащих определенное слово: Например, чтобы вывести все строки, содержащие слово "pattern":
    awk '/pattern/ { print }' filename
    
  4. Вывод строк с определенным числом полей: Чтобы вывести строки, где количество полей больше 3:
    awk 'NF > 3 { print }' filename
    
    Здесь NF — это встроенная переменная awk, которая содержит количество полей в текущей строке.
  5. Форматирование вывода: Например, чтобы вывести только первое и третье поле, разделенные запятой:
    awk '{ print $1 "," $3 }' filename
    
  6. Суммирование значений в поле: Чтобы суммировать значения во втором поле и вывести результат:
    awk '{ sum += $2 } END { print sum }' filename
    
    Здесь sum += $2 накапливает сумму второго поля, а блок END выполняется после обработки всех строк и выводит итоговую сумму.
  7. Изменение разделителя полей: Если поля разделены не пробелами, а, например, запятыми, можно установить разделитель с помощью -F:
    awk -F, '{ print $1, $2 }' filename
    
    Здесь -F, устанавливает запятую как разделитель полей.
  8. Работа с числовыми данными и форматирование вывода: Чтобы вывести данные в формате с двумя десятичными знаками:
    awk '{ printf "%.2f\n", $2 }' filename
    
    Здесь printf используется для форматирования числовых данных.

Примеры использования в сценариях

  1. Обработка логов: Если у вас есть лог-файл, и вы хотите подсчитать количество строк для каждого уникального IP-адреса:
    awk '{ count[$1]++ } END { for (ip in count) print ip, count[ip] }' logfile
    
  2. Выборка и сортировка данных: Например, выбрать и отсортировать данные по значению во втором поле:
    awk '{ print $2, $1 }' filename | sort -n
    

sed

Утилита командной строки для обработки и трансформации текстовых данных в Unix-подобных системах. Основное предназначение sed — это редактирование текстовых потоков, таких как вывод команд или содержимое файлов, без необходимости вручную открывать и изменять их в текстовом редакторе.

Основные возможности

  1. Поиск и замена текста: sed позволяет искать и заменять текстовые строки по заданному шаблону.
  2. Удаление строк: Можно удалять строки, соответствующие определенному шаблону.
  3. Добавление и вставка текста: sed может добавлять или вставлять текст перед или после определенных строк.
  4. Трансформация текста: sed позволяет изменять текст, используя регулярные выражения.
  5. Обработка текста в потоковом режиме: sed обрабатывает текстовые данные на лету, что позволяет использовать его в конвейерах команд.

Основной синтаксис

Основной синтаксис sed выглядит следующим образом:

sed 'command' filename

Здесь command — это команда sed, которая будет выполнена над текстом в filename.

Примеры использования

  1. Поиск и замена текста: Чтобы заменить все вхождения "old" на "new" в файле:
    sed 's/old/new/g' filename
    
    Здесь s/old/new/g — это команда замены:
    • s — команда замены (substitute).
    • old — текст для замены.
    • new — новый текст.
    • g — глобальная замена (все вхождения в строке).
  2. Поиск и замена текста с использованием регулярных выражений: Заменить все вхождения, начинающиеся с "foo" и заканчивающиеся на "bar", на "baz":
    sed 's/foo.*bar/baz/' filename
    
  3. Удаление строк: Удалить строки, содержащие слово "delete":
    sed '/delete/d' filename
    
    Здесь /delete/ — шаблон для поиска строк, содержащих слово "delete", а d — команда для удаления строк.
  4. Добавление текста: Добавить строку "New line" после строки, содержащей "pattern":
    sed '/pattern/a New line' filename
    
    Здесь a — команда добавления строки.
  5. Вставка текста: Вставить строку "Inserted line" перед строкой, содержащей "pattern":
    sed '/pattern/i Inserted line' filename
    
    Здесь i — команда вставки строки.
  6. Изменение текста в строке: Заменить текст в строке, если она содержит "pattern":
    sed '/pattern/c New text' filename
    
    Здесь c — команда замены всей строки на "New text".
  7. Работа с диапазоном строк: Изменить текст в строках с 2-й по 4-ю:
    sed '2,4s/old/new/g' filename
    
    Здесь 2,4s/old/new/g применяет замену только в строках с 2 по 4.
  8. Использование нескольких команд: Выполнить несколько команд sed последовательно:
    sed -e 's/old/new/g' -e '/pattern/d' filename
    
    Здесь -e используется для указания нескольких команд.
  9. Замена в файле на месте: Заменить текст непосредственно в файле (без вывода на экран):
    sed -i 's/old/new/g' filename
    
    Здесь -i указывает sed изменять файл на месте. Можно также использовать -i.bak, чтобы создать резервную копию файла перед изменением.

Полезные флаги и опции

  • -n — подавление вывода всех строк по умолчанию. Полезен для работы с командами p (печать) и другими, чтобы выводить только нужные строки.
  • -e — позволяет использовать несколько команд в одной строке.
  • -f — позволяет читать команды sed из файла.

Примеры использования в конвейерах команд

  1. Удаление всех пустых строк из вывода другой команды:
    some_command | sed '/^$/d'
    
    Здесь sed удаляет все пустые строки из вывода some_command.
  2. Подсчет количества строк в выводе другой команды:
    some_command | sed -n '$='
    
    Здесь sed -n '$=' выводит номер последней строки, что равносильно количеству строк в выводе some_command.

cut

Утилита командной строки в Unix-подобных системах, используемая для извлечения определённых частей строк из текстовых файлов или потоков данных. Она особенно полезна для работы с текстовыми данными, где данные организованы в виде строк с фиксированными или разделёнными символами полями.

Основные возможности

  1. Извлечение полей: cut может извлекать определённые поля из строк, разделённых фиксированным разделителем (например, пробелами или запятыми).
  2. Извлечение символов: Можно извлекать определённые диапазоны символов из каждой строки.
  3. Поддержка различных разделителей: cut поддерживает различные символы-разделители для полей, такие как табуляция, запятые, пробелы и другие.

Основной синтаксис

Основной синтаксис cut выглядит следующим образом:

cut [options] filename

Опции и флаги

  1. -f — указывает номера полей для извлечения. Поля разделяются символом, заданным с помощью опции -d.
  2. -d — указывает символ-разделитель полей. По умолчанию используется табуляция.
  3. -c — указывает диапазоны символов для извлечения.
  4. -b — указывает диапазоны байтов для извлечения (реже используется).

Примеры использования

  1. Извлечение полей по разделителю: Чтобы извлечь первый и третий поля из файла data.txt, где поля разделены запятыми:
    cut -d',' -f1,3 data.txt
    
    Здесь:
    • -d',' указывает, что разделителем полей является запятая.
    • -f1,3 указывает, что нужно извлечь первое и третье поля.
  2. Извлечение одного поля: Чтобы извлечь только второй столбец из файла data.txt, где разделителем является табуляция (по умолчанию):
    cut -f2 data.txt
    
    Если разделитель другой, можно указать его с помощью -d.
  3. Извлечение диапазона полей: Чтобы извлечь поля со второго по четвёртое:
    cut -d',' -f2-4 data.txt
    
    Здесь 2-4 указывает диапазон полей от второго до четвёртого включительно.
  4. Извлечение символов по диапазону: Чтобы извлечь символы с 5 по 10 из каждой строки:
    cut -c5-10 data.txt
    
    Здесь -c5-10 указывает диапазон символов от 5 до 10.
  5. Извлечение отдельных символов: Чтобы извлечь 1-й, 4-й и 7-й символы из каждой строки:
    cut -c1,4,7 data.txt
    
    Здесь -c1,4,7 указывает извлечение символов на позициях 1, 4 и 7.
  6. Работа с байтами: Чтобы извлечь первые 10 байтов из каждой строки:
    cut -b1-10 data.txt
    
    Здесь -b1-10 указывает диапазон байтов.

Примеры использования в конвейерах команд

  1. Извлечение столбцов из вывода другой команды: Например, чтобы получить список процессов и извлечь только их идентификаторы (PID) и команду:
    ps aux | cut -d' ' -f1,11
    
    Однако, более эффективным подходом для таких задач может быть использование awk или ps с опциями.
  2. Фильтрация файлов CSV: Если файл data.csv содержит данные, разделённые запятыми, и вы хотите извлечь только второй и четвёртый столбцы:
    cut -d',' -f2,4 data.csv
    

Ограничения и примечания

  • cut не поддерживает сложные регулярные выражения и не может обрабатывать данные, где поля могут содержать разделители. Для таких случаев лучше использовать awk или sed.
  • cut работает с текстовыми данными и может не учитывать различные кодировки, если они включают сложные символы.

uniq

Утилита командной строки в Unix-подобных системах, предназначенная для удаления дубликатов строк из текстовых данных. Она обычно используется в связке с sort, поскольку uniq работает эффективно только на отсортированных данных.

Основные возможности

  1. Удаление дубликатов строк: uniq удаляет повторяющиеся строки, оставляя только уникальные.
  2. Подсчёт повторений: uniq может подсчитывать количество повторений каждой строки.
  3. Вывод только уникальных или только дублированных строк: uniq может выводить только уникальные строки или только дубликаты.

Основной синтаксис

Основной синтаксис команды uniq выглядит следующим образом:

uniq [options] [input_file] [output_file]

Опции и флаги

  1. -c — подсчёт количества повторений строк. Выводит количество повторений перед строкой.
  2. -d — вывод только дублированных строк (строки, которые встречаются более одного раза).
  3. -u — вывод только уникальных строк (строки, которые встречаются ровно один раз).
  4. -i — игнорирование регистра при сравнении строк (сравнение строк без учёта регистра).
  5. -w N — игнорирование первых N символов строки при поиске дубликатов. Полезно, если строки имеют префиксы, которые нужно игнорировать.

Примеры использования

  1. Удаление дубликатов строк: Чтобы удалить дубли из файла data.txt, вы можете использовать:
    uniq data.txt
    
    Это удаляет последовательные повторения строк, оставляя только уникальные строки.
  2. Подсчёт количества повторений строк: Чтобы вывести количество повторений каждой строки в файле data.txt, используйте:
    uniq -c data.txt
    
    Здесь перед каждой строкой будет показано количество её повторений.
  3. Вывод только уникальных строк: Чтобы вывести только строки, которые встречаются ровно один раз:
    uniq -u data.txt
    
  4. Вывод только дублированных строк: Чтобы вывести только строки, которые повторяются:
    uniq -d data.txt
    
  5. Игнорирование регистра: Если строки могут различаться только регистром, и вы хотите игнорировать это различие:
    uniq -i data.txt
    
  6. Игнорирование первых N символов: Если строки имеют общий префикс, который нужно игнорировать при сравнении, например, игнорировать первые 5 символов:
    uniq -w 5 data.txt
    
    Здесь -w 5 указывает игнорировать первые 5 символов строки при сравнении.
  7. Обработка отсортированных данных: Обычно uniq используется в связке с sort для удаления всех дубликатов в неотсортированном файле:
    sort data.txt | uniq
    
    Сначала sort упорядочивает строки, а затем uniq удаляет дубликаты.

Примеры использования в конвейерах команд

  1. Подсчёт уникальных значений: Чтобы подсчитать количество уникальных значений в выводе другой команды:
    ls | sort | uniq -c
    
    Это сначала сортирует список файлов и затем подсчитывает количество повторений каждого имени файла (хотя в этом случае все имена файлов уникальны, это просто демонстрация использования).
  2. Фильтрация и анализ данных: Если у вас есть данные о запросах в лог-файле и вы хотите найти количество уникальных IP-адресов:
    awk '{print $1}' access.log | sort | uniq -c
    
    Здесь awk извлекает IP-адреса, sort упорядочивает их, а uniq -c подсчитывает количество запросов от каждого IP-адреса.

sort

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

Основные возможности

  1. Сортировка строк по алфавиту: Сортировка строк в текстовом файле по их содержимому в алфавитном порядке.
  2. Сортировка чисел: Сортировка строк, содержащих числовые значения.
  3. Сортировка по нескольким критериям: Сортировка строк по нескольким полям или столбцам.
  4. Сортировка по убыванию: Сортировка строк в обратном порядке.
  5. Уникальность: Удаление дубликатов при сортировке.
  6. Обработка больших объемов данных: Эффективная работа с большими файлами и потоками данных.

Основной синтаксис

Основной синтаксис sort выглядит следующим образом:

sort [options] filename

Где filename — это имя файла, который вы хотите отсортировать. Если filename не указан, sort будет читать из стандартного ввода.

Опции и флаги

  1. -n — сортировка чисел. Сортирует строки как числа, а не как строки.
  2. -r — сортировка в обратном порядке (по убыванию).
  3. -k — сортировка по конкретному полю. Позволяет указать, по какому полю строки должны быть отсортированы.
  4. -t — указывает символ-разделитель полей. По умолчанию используется пробел или табуляция.
  5. -u — удаление дубликатов строк (выводит только уникальные строки).
  6. -f — игнорировать регистр при сортировке (сортировка без учета регистра).
  7. -M — сортировка по месяцу (для строк, содержащих название месяца).
  8. -b — игнорировать начальные пробелы при сортировке.

Примеры использования

  1. Сортировка строк по алфавиту: Чтобы отсортировать строки в файле data.txt в алфавитном порядке:
    sort data.txt
    
  2. Сортировка чисел: Если в файле numbers.txt находятся числовые значения, и вы хотите отсортировать их по возрастанию:
    sort -n numbers.txt
    
  3. Сортировка в обратном порядке: Чтобы отсортировать строки в файле data.txt в обратном порядке:
    sort -r data.txt
    
  4. Сортировка по конкретному полю: Если в файле data.txt данные разделены пробелами и вы хотите отсортировать строки по третьему полю:
    sort -k3 data.txt
    
    Для сортировки по конкретному полю с указанием разделителя:
    sort -t',' -k2 data.csv
    
    Здесь -t',' указывает запятую как разделитель полей, а -k2 — сортировать по второму полю.
  5. Удаление дубликатов строк: Чтобы вывести только уникальные строки в файле data.txt:
    sort -u data.txt
    
  6. Игнорирование регистра: Чтобы отсортировать строки в файле data.txt, игнорируя регистр букв:
    sort -f data.txt
    
  7. Сортировка по дате: Если строки содержат даты в формате Месяц Дата Год, можно использовать -M для сортировки по месяцам:
    sort -M dates.txt
    
  8. Сортировка по числовому диапазону: Сначала нужно указать поле и затем диапазон, например, для сортировки по числовым значениям в первом поле:
    sort -k1,1n data.txt
    
    Здесь -k1,1n указывает на сортировку по первому полю числовым способом.

Обработка больших объемов данных

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

Примеры использования sort в конвейерах команд

  1. Сортировка вывода другой команды: Например, чтобы отсортировать вывод команды ls по имени файла:
    ls | sort
    
  2. Сортировка и подсчет уникальных строк: Чтобы найти уникальные строки в файле и отсортировать их:
    sort data.txt | uniq
    
    Здесь uniq удаляет дубликаты из отсортированного списка.

tr

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

Основные возможности

  1. Замена символов: Заменяет одни символы на другие.
  2. Удаление символов: Удаляет указанные символы из текста.
  3. Преобразование регистра: Преобразует символы в верхний или нижний регистр.
  4. Удаление повторяющихся символов: Удаляет повторяющиеся символы, оставляя только уникальные.

Основной синтаксис

Основной синтаксис команды tr выглядит следующим образом:

tr [options] SET1 [SET2]
  • SET1 — набор символов, которые будут заменены или удалены.
  • SET2 — набор символов, на которые заменяются символы из SET1. Если SET2 не указан, символы из SET1 будут удалены.

Примеры использования

  1. Замена символов: Чтобы заменить все пробелы в тексте на подчеркивания:
    echo "Hello world" | tr ' ' '_'
    
    Здесь пробелы в строке "Hello world" заменяются на подчеркивания, и результат будет "Hello_world".
  2. Преобразование регистра: Чтобы преобразовать все буквы в верхний регистр:
    echo "hello world" | tr '[:lower:]' '[:upper:]'
    
    Здесь [:lower:] представляет собой класс символов для всех строчных букв, а [:upper:] — для всех прописных букв. В результате строка станет "HELLO WORLD". Аналогично, для преобразования в нижний регистр:
    echo "HELLO WORLD" | tr '[:upper:]' '[:lower:]'
    
  3. Удаление символов: Чтобы удалить все цифры из текста:
    echo "abc123def456" | tr -d '0-9'
    
    Здесь -d указывает, что нужно удалить символы, соответствующие диапазону '0-9'. Результатом будет "abcdef".
  4. Замена нескольких символов: Чтобы заменить все буквы "a" на "1", а все буквы "b" на "2":
    echo "abc abc" | tr 'ab' '12'
    
    Здесь a заменяется на 1, а b на 2. Результатом будет "12c 12c".
  5. Удаление повторяющихся символов: Чтобы удалить повторяющиеся пробелы и оставить только один пробел между словами:
    echo "hello    world" | tr -s ' '
    
    Здесь -s (squeeze) используется для замены последовательных повторяющихся пробелов одним пробелом. Результатом будет "hello world".
  6. Работа с классами символов: Чтобы заменить все пробелы на табуляции:
    echo "hello world" | tr ' ' '\t'
    
    Здесь пробелы заменяются на символ табуляции. Результатом будет "hello\tworld".
  7. Удаление всех символов, кроме букв и цифр: Чтобы оставить только буквы и цифры, удалив все остальные символы:
    echo "abc!@#123" | tr -cd '[:alnum:]'
    
    Здесь -c инвертирует набор символов, а -d удаляет символы, не соответствующие [:alnum:] (буквы и цифры). Результатом будет "abc123".

Примеры использования tr в конвейерах команд

  1. Приведение текста к нижнему регистру и удаление символов: Чтобы привести текст к нижнему регистру и удалить все пробелы:
    echo "Hello World" | tr '[:upper:]' '[:lower:]' | tr -d ' '
    
    Здесь сначала преобразуется текст в нижний регистр, затем удаляются пробелы. Результатом будет "helloworld".
  2. Преобразование текстового ввода в формат CSV: Чтобы заменить пробелы на запятые в тексте:
    echo "one two three" | tr ' ' ','
    
    Результатом будет "one,two,three".

paste

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

Основные возможности

  1. Слияние строк из нескольких файлов: Объединение строк из различных файлов в одну строку.
  2. Выбор разделителя: Возможность указать символ, который будет использоваться в качестве разделителя между объединенными строками.
  3. Обработка данных в конвейере команд: Может использоваться для обработки вывода других команд и объединения данных.

Основной синтаксис

Основной синтаксис команды paste выглядит следующим образом:

paste [options] file1 file2 ...

Опции и флаги

  1. -d — указывает символ(ы)-разделитель, который будет использоваться между объединенными строками. По умолчанию используется табуляция.
  2. -s — объединяет строки в каждом файле по одной строке, т.е. сливает строки по вертикали (по умолчанию слияние происходит по горизонтали).
  3. - — обозначает стандартный ввод. Может быть использован для обработки входных данных из конвейера.

Примеры использования

  1. Слияние строк из нескольких файлов: Если у вас есть два файла file1.txt и file2.txt, и вы хотите объединить их строки по горизонтали:
    paste file1.txt file2.txt
    
    Это объединит строки из file1.txt и file2.txt, выводя их в одной строке с табуляцией между строками.
  2. Использование другого разделителя: Чтобы использовать запятую в качестве разделителя между строками:
    paste -d',' file1.txt file2.txt
    
    Здесь -d',' указывает, что строки будут разделены запятой.
  3. Объединение строк по вертикали: Чтобы объединить строки из одного файла в одну строку (слить все строки в одном файле):
    paste -s file.txt
    
    Это объединит все строки из file.txt в одну строку, разделяя их табуляцией.
  4. Объединение строк из стандартного ввода: Если нужно объединить строки из вывода команды:
    echo -e "one\nthree" | paste -d',' - <(echo -e "two\nfour")
    
    Здесь paste объединяет строки из стандартного ввода с использованием запятой в качестве разделителя.
  5. Использование нескольких разделителей: Если вы хотите использовать несколько символов-разделителей (например, запятая и пробел), можно указать их в качестве аргумента -d:
    paste -d', ' file1.txt file2.txt
    
    Это разделит строки из двух файлов сначала запятой, затем пробелом.
  6. Создание таблицы из нескольких файлов: Если у вас есть несколько файлов, где каждый файл представляет собой столбец данных, можно объединить их в таблицу:
    paste col1.txt col2.txt col3.txt
    
    Здесь строки из col1.txt, col2.txt, и col3.txt будут объединены в одну строку, где каждое значение будет отделено табуляцией.

Примеры использования в конвейерах команд

  1. Создание табличного представления данных: Если у вас есть несколько файлов, каждый из которых содержит данные для одного столбца, вы можете объединить их в таблицу:
    cat file1.txt | paste - file2.txt
    
    Здесь file1.txt и file2.txt будут объединены, выводя строки из file1.txt и соответствующие строки из file2.txt в одной строке.
  2. Объединение вывода команд: Объедините вывод двух команд в одну строку:
    echo "one" | paste - <(echo "two")
    
    Результатом будет "one\ttwo", если не указан другой разделитель.

Современные версии ПО

Все рассмотренные утилиты существуют уже давно и не только в GNU/Linux, но и в других Unix подобных дистрибутивах, но то что они есть давно и везде совсем не значит, что они являются лучшими в своём роде. Множество из этих программ имеют современные аналоги, которые и работают быстрее, и предоставляют информацию в более удобном виде, и добавляют новые возможности. Вот несколько примеров программ и утилит, которые могут служить аналогами стандартных программ и инструментов в Linux:

  1. ripgrep (rg) — Аналог grep. Это утилита для поиска текста в файлах, которая быстрее и эффективнее grep, благодаря использованию алгоритмов поиска, оптимизированных для производительности.
  2. fd — Аналог find. Эта утилита предназначена для поиска файлов и директорий, но с более удобным интерфейсом и улучшенной производительностью по сравнению с find.
  3. bat — Аналог cat. Это улучшенная версия cat, которая поддерживает подсветку синтаксиса для различных языков программирования и улучшенное отображение содержимого файлов.
  4. exa — Аналог ls. Это современная утилита для отображения списка файлов и директорий, поддерживающая цветную подсветку, улучшенные форматирования и отображение дополнительных метаданных. Если хочется попробовать данные утилиты в действии, то можно установить их или из стандартных репозиториев вашего дистрибутива, или с помощью пакетного менеджера cargo, или найти исходники в github.