Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Руководство по командам Expand и Unexpand с примерами

Оригинал: Expand And Unexpand Commands Tutorial With Examples
Автор: sk
Дата публикации: 29 мая 2019 года
Перевод: А. Кривошей
Дата перевода: июнь 2019 г.

В этой статье описываются, с практическими примерами, две команды Linux, а именно Expand и Unexpand. Для тех, кому это интересно, команды Expand и Unexpand используются для замены символов табуляции в файлах символами пробела и наоборот. В MS-DOS также есть команда «Expand», которая используется для распаковки сжатых файлов. Но команда Expand в Linux просто преобразует табуляцию в пробелы. Эти две команды являются частью GNU coreutils и написаны Дэвидом Маккензи.

Для демонстрации в этом руководстве я буду использовать текстовый файл с именем «ostechnix.txt». Все приведенные ниже команды протестированы в Arch Linux.

Примеры команды Expand

Как я уже упоминал, команда Expand заменяет символы табуляции в файле на символы пробела.

Теперь давайте преобразуем табуляцию в пробелы в файле ostechnix.txt и запишем результат в стандартный вывод с помощью команды:

$ expand ostechnix.txt

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

$ expand ostechnix.txt>output.txt

Мы также можем конвертировать табуляцию в пробелы, читая из стандартного ввода. Для этого просто запустите команду «expand» без указания имени исходного файла:

$ expand

Просто введите текст и нажмите клавишу ENTER, чтобы преобразовать табуляцию в пробелы. Нажмите CTRL + C, чтобы выйти из программы.

Если вы не хотите конвертировать табуляцию после непустых символов, используйте флаг -i, как показано ниже.

$ expand -i ostechnix.txt

Мы также можем иметь табуляцию с определенным количеством символов, а не с 8 (значение по умолчанию):

$ expand -t=5 ostechnix.txt

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

$ expand -t 5,10,15 ostechnix.txt

или

$ expand -t "5 10 15" ostechnix.txt

Для более подробной информации обратитесь к man-страницам.

$ man expand

Примеры команды Unexpand

Как вы, возможно, уже догадались, команда Unexpand делает противоположное команде Expand, т.е. она преобразует символы пробела в символы табуляции. Позвольте мне показать вам несколько примеров, чтобы узнать, как использовать команду Unexpand.

Чтобы преобразовать пробелы в файле в символы табуляции и записать вывод в stdout, выполните:

$ unexpand ostechnix.txt

Если вы хотите записать вывод в файл, а не просто отображать его в стандартный вывод, используйте следующую команду:

$ unexpand ostechnix.txt>output.txt

Преобразование пробелов в табуляцию, чтение из стандартного ввода:

$ unexpand

По умолчанию команда Unexpand преобразует только начальные пробелы. Если вы хотите преобразовать все пробелы, вместо начальных, используйте флаг -a:

$ unexpand -a ostechnix.txt

Чтобы преобразовать только начальные последовательности пробелов (обратите внимание, что этот флаг переопределяет -a):

$ unexpand --first-only ostechnix.txt

Табуляция может содержать определенное количество символов, а не 8:

$ unexpand -t 5 ostechnix.txt

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

$ unexpand -t 5,10,15 ostechnix.txt

или

$ unexpand -t "5 10 15" ostechnix.txt

Для более подробной информации обратитесь к man-страницам.

$ man unexpand