ako*_*man 5 linux shell base64 hex
base64我的文件(file.txt)中有一个字符串列表,我需要将其转换为十六进制。例如,
6IwwfX8Cctn85LW+vItMhw==
wIsNfYESR9Nfueo7mg3f7Q==
A+MxnRyu6kotbKPZglQ0Fg==
Jt5jNIphpmfGoFgtgM7/Sg==
sN+Q0Xcu6JHlkqdhJlM/tw==
Run Code Online (Sandbox Code Playgroud)
命令:
echo -n 6IwwfX8Cctn85LW+vItMhw== | base64 -d | od -t x1 -An
Run Code Online (Sandbox Code Playgroud)
该命令单独工作(尽管之间有空格),但我需要转换文件中的每个字符串,该文件有 500 多行。
基本上,我希望将上述 base64 字符串格式解码为以下示例十六进制字符串格式:
30aa268d130fb78a4f8cb6f300e4c760
有没有一种方法可以调用文件中的每一行(例如每个命令)并使用 base64 命令进行管道转换?任何帮助表示赞赏。
您可以使用此命令并使用以下语法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
Run Code Online (Sandbox Code Playgroud)
使用临时文件覆盖文件内容并移回原始文件
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
Run Code Online (Sandbox Code Playgroud)