Как перевернуть строку «задом наперёд» в командной строке 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 показать информацию о версии и выйти
