shell 實現N位自動補零和日期迴圈
阿新 • • 發佈:2019-01-24
用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