Изменение в кодировке Base64 только для печати символа

#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 , вы получите те же данные обратно.