Эта статья научит вас преобразовывать вкладки в пробелы в командной строке Linux с точки зрения программирования.
Дискуссия по поводу использования вкладок и пробелов в программировании никогда не заканчивается.
Хотя вы можете предпочитать использовать вкладки все время, есть вероятность, что в вашем руководстве по кодированию рекомендуется использовать пробелы.
Но если вы уже использовали вкладки повсюду в своей программе и вам нужно преобразовать эти вкладки в пробелы, чтобы рецензент разрешил ваш код, вы находитесь в нужном месте.
В этой статье мы покажем вам, как преобразовать вкладки в пробелы в текстовом файле в командной строке Linux.
Мы используем этот образец текстового файла, который является простой программой C ++ для проверки нечетного и четного числа. Это содержимое файла:
Есть несколько способов сделать это. Самый простой способ, который мы находим, это использование команды cat.
Вы можете использовать команду cat с опцией -T и отобразить все вкладки как ^ I на экране (стандартный вывод).
cat -T tab_file
Вы можете увидеть расположение вкладок в файле.
#include
using namespace std;
int main()
{
^Iint n;
^Icout << “Enter a number:^I“;
^Icin >> n;
^I
^Iif (n%2 == 0) {
^I^Icout<<n<< “is an even Number”;
^I}
^Ielse
^I^Icout<<n<< “is an odd Number”;
^Ireturn 0;
}
Если вы используете команду расширения для файла, он преобразует все вкладки в блок из 8 пробелов и отобразит вывод на экране.
expand tab_file
Но это не очень удобно, не так ли? Вы вряд ли увидите изменения здесь. Лучшей идеей было бы сохранить вывод в другой файл.
expand tab_file > space_file
Теперь, если вы видите файл с помощью команды cat, вы больше не найдете вкладок.
Как мы уже упоминали в предыдущем разделе, по умолчанию вкладка равна 8 пробелам. Это выглядело бы очень странно, если бы ваш код имел такие большие отступы.
Хорошо, что вы можете изменить размер пространства по умолчанию с помощью опции -t.
expand -t N tab_file
Например, если вам нужно изменить каждую вкладку на 2 пробела, вы можете использовать команду expand следующим образом:
expand -t2 tab_file > space_file
Часто в программах вам нужно преобразовать только начальные вкладки, то есть вкладки в начале строки. Вы не хотите касаться вкладок между строками, которые на самом деле являются частью кода.
Expand также предоставляет эту опцию. Если вы хотите преобразовать только ведущие вкладки в пробелы, используйте вариант -i.
Если мы продолжим предыдущий пример, вот как будет выглядеть команда:
expand -t2 -i tab_file > space_file
Во всех приведенных выше примерах вы сохранили преобразованный файл в новый файл. Но если ваша цель состоит в том, чтобы очистить ваш код путем преобразования вкладок в пробелы существующих программных файлов, вы бы хотели, чтобы вывод был сохранен в самом оригинальном файле.
Для этого вы можете использовать команду sponge. sponge «впитывает» весь стандартный ввод, прежде чем записать его на вывод. Это очень полезно, когда вы пытаетесь изменить и сохранить тот же файл.
Теперь команда sponge может быть недоступна в вашей системе. Вам придется установить пакет moreutils.
В дистрибутивах на основе Ubuntu/Debian вы можете использовать эту команду для установки moreutils:
sudo apt install moreutils
После установки вы можете использовать его в следующей функции:
expand -t2 -i tab_file | sponge tab_file
До сих пор все, что вы узнали, было применимо к одному файлу. Но если у вас есть проект, в котором есть несколько программных файлов, и вы хотите преобразовать вкладки в пробелы во всех из них, вам нужно быть здесь немного умнее.
То, что мы узнали до сих пор, может быть объединено с великолепными командами find и exec.
find . -name '*.cpp' -type f -exec bash -c 'expand -t 4 "$0" | sponge "$0"' {} \;
Приведенная выше команда находит все файлы, заканчивающиеся расширением cpp, передает эти файлы в команду expand, а команда expand записывает вывод в исходные файлы с помощью команды sponge.
Вы можете подумать, что с помощью команды sed на этом этапе было бы проще, но это полностью ваш выбор.