#linux #bash #base64
#linux #bash #base64
Вопрос:
У меня есть строка base64, которая содержит непечатаемые символы.
Я хочу изменить только тот, который можно распечатать. Но я не могу использовать base64 -d, потому что я потеряю непечатаемые файлы.
Это команда, которая позволяет мне это сделать?
Например, если я сделаю
echo "base64 string" | base64 -d | od -c
Я получаю
0000000 004 002 254 334 0 202 003 362 f 0 202 003 354 0 202
0000020 003 350 002 002 006 021 0 - 0 ) 0 036 002 004 A 343
0000040 271 | 002 003 352 233 002 002 021 340 002 002 232 002
0000060 001 . 004 006 f ) 346 353 323 f a J 0 0 6
0000100 0 6
и т.д…
допустим, я хочу изменить только J 0 0 на J 0 1…Я могу это сделать?
Обновить:
На данный момент решение заключалось в преобразовании и выводе декодирования base64 в файл, а затем редактировании его с помощью шестнадцатеричного редактора.
Итак, если вы знаете какой-нибудь шестнадцатеричный редактор командной строки, встроенный в Linux, пожалуйста, скажите мне
Комментарии:
1.Вы декодируете
"base64 string"
, вы удивлены, что получаете «двоичные» данные обратно?2. @aioobe Я знаю проблему, которую я искал для ее решения…. Я имею в виду, что я не должен использовать декодирование base64…
3. и каждый символ, даже если он не доступен для печати, может быть записан в соответствии с кодом ….004 не доступен для печати, но код, которым он является
Ответ №1:
Когда я пробую это в своей системе, я получаю
base64: неверный ввод
Поскольку вам нужны только печатные символы, я подозреваю, что вам нужна строка в кодировке base64.
Если это так, вам следует пропустить этот -d
параметр:
echo "base64 string" | base64 | od -c
Если вы действительно хотите изменить одни символы на другие, вы можете использовать команду tr
(translate):
От man tr
:
tr
— перевод или удаление символов
Комментарии:
1. Но при декодировании с помощью base64 я могу потерять некоторый непечатаемый символ … вот что происходит….
2.
base64
кодирует произвольные данные в печатные символы.base64 -d
отменяет этот процесс. Очевидно, что в результате декодирования вы можете получить непечатаемые символы. Что точно, так это то, что какие бы данные вы ни передалиbase64 | base64 -d
, вы получите те же данные обратно.