zaLinux.ru

Как записать символы строки в обратном порядке


Как перевернуть строку «задом наперёд» в командной строке Linux? К примеру есть строка "12345", а нужно получить строку "54321".

Для этого есть специальная команда rev, которая посимвольно печатает строки в обратном порядке.

Утилита rev копирует указанные файлы в стандартный вывод, меняя порядок символов в каждой строке. Если файлы не указаны, читается стандартный ввод.

Использование:

rev ФАЙЛ

Обратная запись строк из стандартного ввода:

echo 12345 | rev
54321

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

var="12345"
copy=${var}

len=${#copy}
for((i=$len-1;i>=0;i--)); do rev="$rev${copy:$i:1}"; done

echo "var: $var, rev: $rev"

Запуск:


bash ./reverse

Вывод:

var: 12345, rev: 54321

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

Использование:

tac [ПАРАМЕТР]… [ФАЙЛ]…

Эта команда печатает ФАЙЛЫ на стандартный вывод, начиная с последней строки.

Если ФАЙЛ не задан или задан как -, читает стандартный ввод.

Аргументы, обязательные для длинных параметров, обязательны и для коротких.

  -b, --before             присоединять разделитель к началу, а не к концу
  -r, --regex              воспринимать разделитель как регулярное выражение
  -s, --separator=СТРОКА   использовать как разделитель СТРОКУ, а не символ
                             новой строки
      --help     показать эту справку и выйти
      --version  показать информацию о версии и выйти

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *