декодировать Base64 из оболочки
Помогите,если возможно, пожалуйста. Я хочу восстановить файл попробовать.txt
Попробуй.txt содержит:
uid: random1
sn: 8
uid: random2
sn:: SGVsbG8sIFdvcmxkIQo=
К этому:
random1 8
random2 Hello, World!
Проблема в Base64. Каков наилучший и возможный способ его расшифровки?
1) Ищите, хотя и старайтесь.txt строка за строкой и декодирование на соответствующей строке
Возможно ли это сделать с помощью awk или это принятие желаемого за действительное?
Это не работает -> cat try.txt | awk '{if ($1 == "sn::") base64 -d $2'
2) поиск через sn.txt строка за строкой и декодировать на соответствующей строке
path=/dev/shm
uidf=$path/uid.txt
snf=$path/sn.txt
ff=$path/ff.txt
Некоторый код для поиск через $ОЯТ для различных base64 закодированный текст
не могли бы вы помочь с этим?
2а)
кошке попробовать.txt / grep-v dn: / awk ' / uid / {print $2}' > $uidf
кошке попробовать.txt / grep-v dn: / awk '/sn / {print $2}' > $snf
Здесь некоторый код для поиска кодированной строки base64 и декодирования ее
paste $uidf $snf | awk '{print $1,$2}' > $ff
2b) кошке попробовать.txt / grep-v dn: / awk '{print} '
case "$string" in
"sn::" ) base64 -d $string;;
esac
3 ответа:
Этот однострочник может дать то, что вы хотите:
awk -v RS="" '$3=="sn::"{"base64 -d<<< \""$4"\""|getline $4}{print $2,$4}' file
В приведенной выше команде
getline
использовался для получения выходных данных от внешнего cmd (base64).Тест с вашим файлом:
kent$ cat f uid: random1 sn: 8 uid: random2 sn:: SGVsbG8sIFdvcmxkIQo= kent$ awk -v RS="" '$3=="sn::"{"base64 -d<<< \""$4"\""|getline $4}{print $2,$4}' f random1 8 random2 Hello, World!