首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将base64字符串解码为文件中的十六进制字符串并覆盖

将base64字符串解码为文件中的十六进制字符串并覆盖
EN

Stack Overflow用户
提问于 2019-01-29 07:01:45
回答 4查看 2.4K关注 0票数 5

我在一个文件(file.txt)中有一个file.txt字符串列表,我需要将其转换为十六进制。例如,

代码语言:javascript
代码运行次数:0
运行
复制
6IwwfX8Cctn85LW+vItMhw==
wIsNfYESR9Nfueo7mg3f7Q==
A+MxnRyu6kotbKPZglQ0Fg==
Jt5jNIphpmfGoFgtgM7/Sg==
sN+Q0Xcu6JHlkqdhJlM/tw==

命令:

代码语言:javascript
代码运行次数:0
运行
复制
echo -n 6IwwfX8Cctn85LW+vItMhw== | base64 -d | od -t x1 -An

这个命令单独工作(尽管中间有空格),但我需要通过文件中的每个字符串进行转换,该文件有超过500行。

基本上,我希望上面的base64字符串格式被解码为下面的十六进制字符串格式:

30aa268d130fb78a4f8cb6f300e4c760

是否有一种方法可以调用文件中的每一行(如用于每个命令)并使用base64命令进行转换?任何帮助都是非常感谢的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-01-29 07:10:48

为此,您可以使用Awk,并使用getline()语法对文件的内容运行命令。

代码语言:javascript
代码运行次数:0
运行
复制
awk '{ cmd = "printf '%s' "$1 "| base64 -d | od -t x1 -An" }
     { while ( ( cmd | getline result ) > 0 ) { gsub(/[[:space:]]+/,"",result); $0 = result }; close(cmd)  }1' file.txt

使用临时文件覆盖文件内容并移回原始文件。

代码语言:javascript
代码运行次数:0
运行
复制
tmpfile=$(mktemp)
awk '{ cmd = "printf '%s' "$1 "| base64 -d | od -t x1 -An" }
     { while ( ( cmd | getline result ) > 0 ) { gsub(/[[:space:]]+/,"",result); $0 = result }; close(cmd)  }1' file.txt > "$tmpfile" && mv "$tmpfile" file.txt
票数 0
EN

Stack Overflow用户

发布于 2019-01-29 07:16:14

尝试:

代码语言:javascript
代码运行次数:0
运行
复制
for b64 in $(cat e.txt); do echo "$b64" | base64 -d | od -t x1 -An | tr -d ' '; done

结尾处的tr -d ' '删除所有空格。

票数 2
EN

Stack Overflow用户

发布于 2019-01-29 07:13:43

代码语言:javascript
代码运行次数:0
运行
复制
cat file.txt | while read input ; do echo -n "$input" | base64 -d | od -t x1 -An ; done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54415495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档