Если вы действительно делаете это для творческого писательского проекта, то я утверждаю, что погружение в программирование не является оправданным. Ни одно из описанных вами входных преобразований не требует от программы решений . То есть; После выбора кодировки входящие письма будут прочно связаны с исходящими письмами. Это значительно расширяет ваши возможности для достижения этой цели и значительно упрощает сложность задачи.
Поскольку вы пометили Терминал , вот пара команд, которые вы можете использовать в действии:
echo "Who are you?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'
выходы: Jub ner lbh?
Это знаменитая Rot13 «кодировка» (все, что она делает, это заменяет букву, которая на 13 позже в алфавите). Это особенно удобно, так как 13 - это половина от 26 алфавита, поэтому добавление некоторого «закодированного» текста вернет вам исходный текст:
echo "Jub ner lbh?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'
выходы: Who are you?
echo
просто отправляет текст на экран или другие команды. Здесь мы echo
наш текст "How are you?"
в канал |
, чтобы передать его следующей команде perl
, которая является очень мощной и гибкой программой для работы с текстом и создания отчетов. Остальная часть строки - просто инструкция для perl о том, как закрутить 13 букв позже в алфавите.
Быстрая заметка; обычно нажатие клавиши return запускает команду в терминале. Вы можете поставить обратную косую черту \
в конце строки и нажать клавишу возврата, тогда она позволит вам продолжать печатать на следующей строке, но обрабатывать все это как одну команду. Удобно для выравнивания вещей.
echo "How are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'DFVBTXEUWZOSHCJMAQYRINKLPGdfvbtxeuwzoshcjmaqyrinklpg'
выходы: Ujk dqt pji?
Есть другая команда, tr
. Этот пример демонстрирует произвольную замену - в данном случае случайную. Он просматривает этот первый длинный набор букв и заменяет вместо него букву во втором длинном наборе, который находится в соответствующей позиции . Поскольку этот пример замещения является случайным, вы можете использовать этот вид сопоставления для создания головоломок «Криптограмма».
Самое замечательное в команде tr
заключается в том, что вы можете указать ей использовать любое «отображение» ввода-вывода, которое вы захотите. Конечно, это немного вручную, но эй - программирование не требуется!
Вот карта для достижения требуемого сдвига примера "согласных и гласных":
echo "Who are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'ECDFIGHJOKLMNPUQRSTVYWXZABecdfighjoklmnpuqrstvywxzab'
Выводы: Xju esi auy?
Не делать это вручную имеет свои преимущества - вы пропустили там гласную.
Так что, если вам нужно быстро попробовать разные сопоставления, подумайте о том, чтобы узнать немного больше о perl
(или проще: sed
. Или более сложно: awk
. Или или или…). Если вместо этого вы не возражаете против тщательного построения команд, просто выровняв каждую входящую букву с желаемой выходной буквой, я думаю, что tr
будет хорошо работать.