下面为你展示如何在 Shell 脚本里运用之前提到的命令来处理 md5sum
命令的输出。
示例脚本
以下是一个包含使用 awk
、cut
、sed
、grep
、tr
、perl
和 python
处理 md5sum
输出的 Shell 脚本:
#!/bin/bash
# 进入指定目录
cd /usr/local/extapps
# 计算文件的 MD5 值
md5_output=$(md5sum scmaint.tar)
# 使用 awk 提取 MD5 值
md5_awk=$(echo "$md5_output" | awk '{print $1}')
echo "使用 awk 提取的 MD5 值: $md5_awk"
# 使用 cut 提取 MD5 值
md5_cut=$(echo "$md5_output" | cut -d ' ' -f 1)
echo "使用 cut 提取的 MD5 值: $md5_cut"
# 使用 sed 提取 MD5 值
md5_sed=$(echo "$md5_output" | sed 's/ .*//')
echo "使用 sed 提取的 MD5 值: $md5_sed"
# 使用 grep 提取 MD5 值
md5_grep=$(echo "$md5_output" | grep -o '^[a-f0-9]\{32\}')
echo "使用 grep 提取的 MD5 值: $md5_grep"
# 使用 tr 提取 MD5 值
md5_tr=$(echo "$md5_output" | tr ' ' '\n' | head -n 1)
echo "使用 tr 提取的 MD5 值: $md5_tr"
# 使用 perl 提取 MD5 值
md5_perl=$(echo "$md5_output" | perl -pe 's/ .*//')
echo "使用 perl 提取的 MD5 值: $md5_perl"
# 使用 python 提取 MD5 值
md5_python=$(echo "$md5_output" | python3 -c "import sys; print(sys.argv[1].split()[0])")
echo "使用 python 提取的 MD5 值: $md5_python"
脚本解释
指定目录与计算 MD5 值:
cd /usr/local/extapps
:进入目标目录。md5_output=$(md5sum scmaint.tar)
:计算scmaint.tar
文件的 MD5 值,并把输出存于md5_output
变量。
使用不同工具提取 MD5 值:
awk
:echo "$md5_output" | awk '{print $1}'
,把输出按空格分割,取第一个字段。cut
:echo "$md5_output" | cut -d ' ' -f 1
,以空格为分隔符,取第一个字段。sed
:echo "$md5_output" | sed 's/ .*//'
,把空格及其后的内容替换为空字符串。grep
:echo "$md5_output" | grep -o '^[a-f0-9]\{32\}'
,用正则表达式匹配 32 位十六进制的 MD5 哈希值。tr
:echo "$md5_output" | tr ' ' '\n' | head -n 1
,将空格替换为换行符,取第一行。perl
:echo "$md5_output" | perl -pe 's/ .*//'
,用正则表达式替换空格及其后的内容。python
:echo "$md5_output" | python3 -c "import sys; print(sys.argv[1].split()[0])"
,使用 Python 分割字符串并取第一个元素。
输出结果:每个工具提取的 MD5 值都会被打印出来。
使用方法
- 把上述脚本保存为一个文件,例如
process_md5.sh
。 - 给脚本添加执行权限:
chmod +x process_md5.sh
。 - 运行脚本:
./process_md5.sh
。