红联Linux门户
Linux帮助

shell实现N位自动补零和日期循环

发布时间:2016-08-23 15:28:12来源:京东放养的爬虫作者:djd已经存在
用awk的printf就可以补位:
# 仅适用于数字  
printf "%04d\n" 86  
echo 86|awk '{printf("%04d\n",$0)}'  
 
下面是我实际应用中使用的一个脚本,目的是批量修改hdfs上的文件名,输入两个参数即可,就是开始时间和结束时间,然后用whil去循环。
 
#example------nohup sh hdfs_rename.sh 20160522 20160530 >>logrename 2>&1 &  
datebeg=$1  
dateend=$2  
beg_s=`date -d "$datebeg" +%Y%m%d`  
end_s=`date -d "$dateend" +%Y%m%d`  
while [ "$beg_s" -le "$end_s" ]    
do  
date=${beg_s}  
for i in `seq 99`  
do  
num1=`echo ${i}|awk '{printf("%06d\n",$0)}'`  
num2=`echo ${i}|awk '{printf("%02d\n",$0)}'`  
echo ${date}  
echo ${num1}  
echo ${num2}  
hadoop fs -mv /xtrader/${date}/${num1}_* /xtrader/${date}/xtrader_UserInfo_${date}_${num2}.gz  
done  
echo ${date}  
beg_s=`date -d"${beg_s}+1 day" +%Y%m%d`  
done
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23562.html