< 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
expand
к результату, используя опцию -t
и перечисляя позиции табуляции. С 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 не имеет заполнения, поэтому она можно конкатенировать как есть. В противном случае строку необходимо перекодировать.
Вероятно, проще всего декодировать входные данные и снова кодировать:
$ echo "AQI=AwQ=" | base64 -d | base64
AQIDBA==
(Или просто запустите декодер отдельно для каждой строки, если чтение строки после дополнения =
оскорбляет вашу чувствительность.)
$ (echo "AQI=" |base64 -d ; echo "AwQ=" |base64 -d) | base64
AQIDBA==