Библиотека сайта 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