Объединить 2 двоичные строки в форме base64

< yourfile tr -s '\t ' '\t\t' | expand -t 19,39

Результаты

         1         2         3         4         5
12345678901234567890123456789012345678901234567890
begining           center              end
beg12              cen12               end12
beg13              cen                 end

Работа

  • Сначала мы выжимаем все остаточные пробелы и/или TAB только до TAB.
  • Затем мы применяем команду expand к результату, используя опцию -t и перечисляя позиции табуляции.
0
08.06.2017, 15:17
2 ответа

С bash:

str1=$(echo -ne "\x01\x02" | base64)
str2=$(echo -ne "\x03\x04" | base64)
if [[ $str1 =~ =$ ]; then
    concat=$( { base64 -d <<<"$str1"; base64 -d <<<"$str2"; } | base64 )
else
    concat="${str1}${str2}"
fi
printf '%s\n' "$concat"

Дело в том, что если str1 не заканчивается на =, то форма Base64 не имеет заполнения, поэтому она можно конкатенировать как есть. В противном случае строку необходимо перекодировать.

3
28.01.2020, 02:16

Вероятно, проще всего декодировать входные данные и снова кодировать:

$ echo "AQI=AwQ=" | base64 -d | base64
AQIDBA==

(Или просто запустите декодер отдельно для каждой строки, если чтение строки после дополнения =оскорбляет вашу чувствительность.)

$ (echo "AQI=" |base64 -d ; echo "AwQ=" |base64 -d) | base64
AQIDBA==
2
28.01.2020, 02:16

Теги

Похожие вопросы