需求:
文件每一行按照md5加密后大写,形成新的文件。
解决思路:
对于这个需求,本能的想用python脚本来写,但是最近在使用linux,想要通过shell来解决,首先分解一下需求,关键字:md5,大写
1、linux md5加密,其命令是md5sum,这个可以对整个文件内容或单个字符串进行加密,直接运行md5sum filename肯定不满足要求。所以需要读取文件行,并对每一行进行加密
2、字符串大写,可以使用tr命令
来看一下最后的脚本,创建脚本md5.sh
#!/bin/bash
cat $1 | while read line #循环读取每一行
do
echo -n $line | md5sum | cut -d" " -f1 | tr "[a-z]" "[A-Z]"
done
hint
由于直接用md5sum产生的结果后面会带有空格加-,如123加密后会出现:
>> echo '123' | md5sum
202cb962ac59075b964b07152d234b70 -
所以使用cut命令 -d是使用空格进行分割,-f是展示第几个字符串,从1开始
切分完成后使用tr命令进行转换即可
如我们有个test.txt文件,内容如下:
123
aaa
通过该脚本执行后:
>> ./md5.sh test.txt > test_md5.txt
然后我们会得到test_md5.txt,内容如下:
202CB962AC59075B964B07152D234B70
14E1B600B1FD579F47433B88E8D85291
有兴趣你也来试试吧!