python和shell处理数据的程序整理

1把文件按行拼接(shell脚步)
文件f1
1
2
3


filename=$1
abc=`cat $filename | awk '
BEGIN{count=1;str=""}
{
    if(count==1)
        {
            count++
        }
    else if(count<NR)
        {
            str=sprintf("%s,%s",str,$1)
            count++
        }
    else
        {
            str+=$1
        }


}
END{print str}'`
变成 1,2,3


2.产生时间点前或者后几天的日期(python脚本和shell脚本)
2.1 python脚本
先把字符串变成日期类型(strptime),在进行运算,运算结果变成字符串(strftime)
#!/use/bin/python
#coding:UTF-8
import datetime


def pro_date(appointed_date,forward_num): #2016-10-12
    date_list = []
    forward_num = int(forward_num)
    for num in range(1,forward_num+1):
        forward_day = datetime.timedelta(days=num)
        this_day_time = datetime.datetime.strptime(appointed_date,"%Y-%m-%d") - forward_day
        this_day = this_day_time.strftime("%Y-%m-%d")
        print this_day
        date_list.append(this_day)
    return date_list


if __name__ == '__main__':
pro_date("2018-01-01",5)


2.2 shell脚本
#/bin/bash
function pro_date()
{
appointed_date=$1
forward_num=$2


for((i=1;i<=$forward_num;i++))
do
    date=$(date -d "$i day ago  $appointed_date" +%Y-%m-%d  )
    echo $date
done
}
pro_date "2018-01-01" 5


3.产生两个时间点内的日期(python脚本和shell脚本)
3.1python脚本
#!/use/bin/python
#coding:UTF-8
import datetime


def pro_date(begin_day,end_day): #2018-01-01
    date_list = []
    begin_day_datetime = datetime.datetime.strptime(begin_day,"%Y-%m-%d")
    end_day_datetime = datetime.datetime.strptime(end_day,"%Y-%m-%d")
    diff = end_day_datetime - begin_day_datetime
    forward_num = diff.days


    for num in range(1,forward_num+1):
        forward_day = datetime.timedelta(days=num)
        this_day_time = datetime.datetime.strptime(end_day,"%Y-%m-%d") - forward_day
        this_day = this_day_time.strftime("%Y-%m-%d")
        print this_day
        date_list.append(this_day)
    return date_list




if __name__ == '__main__':
    pro_date("2017-01-01","2018-01-01")


3.2  shell脚本
function pro_date ()
{
begin_day=$1
end_day=$2
time1=$(($(date +%s -d $end_day)-$(date +%s -d $begin_day)))
forward_num=$(($time1/3600/24))
echo $forward_num
for((i=1;i<=$forward_num;i++))
do
    date=$(date -d "$i day ago  $end_day" +%Y-%m-%d  )
    echo $date
done


}


pro_date "2017-01-01" "2018-01-01"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值