我在一个文件(file.txt)中有一个file.txt字符串列表,我需要将其转换为十六进制。例如,
6IwwfX8Cctn85LW+vItMhw==
wIsNfYESR9Nfueo7mg3f7Q==
A+MxnRyu6kotbKPZglQ0Fg==
Jt5jNIphpmfGoFgtgM7/Sg==
sN+Q0Xcu6JHlkqdhJlM/tw==
命令:
echo -n 6IwwfX8Cctn85LW+vItMhw== | base64 -d | od -t x1 -An
这个命令单独工作(尽管中间有空格),但我需要通过文件中的每个字符串进行转换,该文件有超过500行。
基本上,我希望上面的base64字符串格式被解码为下面的十六进制字符串格式:
30aa268d130fb78a4f8cb6f300e4c760
是否有一种方法可以调用文件中的每一行(如用于每个命令)并使用base64命令进行转换?任何帮助都是非常感谢的。
发布于 2019-01-28 23:10:48
为此,您可以使用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
发布于 2019-01-28 23:16:14
尝试:
for b64 in $(cat e.txt); do echo "$b64" | base64 -d | od -t x1 -An | tr -d ' '; done
结尾处的tr -d ' '
删除所有空格。
发布于 2019-01-28 23:13:43
cat file.txt | while read input ; do echo -n "$input" | base64 -d | od -t x1 -An ; done
https://stackoverflow.com/questions/54415495
复制相似问题