我在文件(file.txt)中有一个base64
字符串列表,我需要将其转换为十六进制。例如,
6IwwfX8Cctn85LW+vItMhw==
wIsNfYESR9Nfueo7mg3f7Q==
A+MxnRyu6kotbKPZglQ0Fg==
Jt5jNIphpmfGoFgtgM7/Sg==
sN+Q0Xcu6JHlkqdhJlM/tw==
命令:
echo -n 6IwwfX8Cctn85LW+vItMhw== | base64 -d | od -t x1 -An
此命令可以单独工作(尽管之间有空格),但是我需要转换文件中的每个字符串,该字符串有500多行。
基本上,我希望将上述base64字符串格式解码为以下示例十六进制字符串格式:
30aa268d130fb78a4f8cb6f300e4c760
有没有一种方法可以调用文件中的每一行(例如每个 命令)并使用base64命令进行转换?任何帮助表示赞赏。
答案 0 :(得分:0)
您可以为此使用Awk
并使用getline()
语法在文件内容上运行命令
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=$(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
答案 1 :(得分:0)
cat file.txt | while read input ; do echo -n "$input" | base64 -d | od -t x1 -An ; done
答案 2 :(得分:0)
尝试:
for b64 in $(cat e.txt); do echo "$b64" | base64 -d | od -t x1 -An | tr -d ' '; done
最后的tr -d ' '
删除所有空格。
答案 3 :(得分:0)
cat file.txt | while read b64
do echo -n "$b64" | base64 -d | od -t x1 -An | sed 's/[\t ]*//g'
done