Есть вот такой пример с HTB:
echo https://www.hackthebox.eu/ | tr 'A-Za-z' 'N-ZA-Mn-za-m'
- тут интересно то, что в set1 и set2 - указаны по несколько наборов для замены, но пока читал про tr в интернете - не нашел похожего примера - попробовал поиграться с утилитой tr, например вот так:
echo 'example123' | tr 'a-z1-9' '1-9A-Z'
- хотел заменить все буквы на цифры, а оставшиеся цифры в конце строки (123) - на буквы в верхнем регистре. Получил такой вывод:
5O1DGC5RST
- попробовал просто заменить буквы на цифры:
echo 'example123' | tr 'a-z' '1-9'
- Вывод:
5919995123
- вот, что остается непонятно -как работает такое указание наборов - т.е. сначала диапазон a-z - меняется на диапазон 1-9 из второго набора, а потом 1-9 на A-Z (но судя по выводу - это не так - т.к. иначе -
5O1DGC5RST
-были бы только буквы ) или же такая замена: первый символ строки (нечетные) - меняется по принципу: 'a-z' - '1-9' , а четные символы - по принципу - '1-9' - 'A-Z' , но опять же, почему тогда в строке
5O1DGC5RST
- идут три буквы подряд 'DGC' и не важно как считать с 0 или 1. Еще, про ключ
-t
- написано что если его не использовать (как у меня в примере и не усекать НАБОР1 - который длине НАБОР2) - то:
В случае если НАБОР1 больше НАБОР2 - последний символ во втором наборе заменяет все оставшиеся символы первого набора.
, но в примере
echo 'example123' | tr 'a-z1-9' '1-9A-Z'
- они равны - т.к. в обоих множествах указанно по два диапазона, суммарная мощность которых - так же равна (т.е. 'все буквы' + 'все цифры'='все цифры' + 'все буквы').
Собственно два вопроса:
1. Как это все работает?
2. как же все таки для строки example123 - заменить example на цифры, а 123 - на заглавные буквы с помощью утилиты tr - ОДНОЙ командой - не прибегая к pipeline ( | ) и перенаправлению потоков ( > ) (И возможно ли это)?