您的位置:首页 > 运维架构 > Shell

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

2018-01-09 19:32 489 查看
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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: