Как перевернуть строку «задом наперёд» в командной строке 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 показать информацию о версии и выйти
Связанные статьи:
- Как в Bash проверить, содержит ли строка подстроку (80%)
- Как извлечь часть строки в Bash (80%)
- Как ввести в cin строки с пробелами в С++ (80%)
- Сравнение char со строкой в C++ (80%)
- Как переменной присвоить значение в несколько строк в скрипте Bash (80%)
- Как пользоваться lsof для просмотра открытых файлов (в Linux всё является файлами) (RANDOM - 20%)