如何使用新输出每次创建新文件

时间:2015-06-09 16:57:55

标签: bash shell unix unix-timestamp

我有shell脚本,目前每5分钟运行一次(我在crontab中配置)并将所有输出发送到同一个文件中。

  • 我希望每隔5分钟(当cronjob会执行时),脚本的输出应该用新文件发送,其中包含" current_date_year_time.csv"

当前脚本

#!/bin/sh
ipath=/usr/local/nextone/bin
ifile=/var/tmp/EndpointUsage.csv
"$ipath"/cli iedge list | awk '
BEGIN { print "------------------------------------";
    printf "|%-17s|%-16s|\n","Registration ID", "Ongoing Calls"
  }
/Registration ID/ { id = $3; next }
/Ongoing Calls/ {print "------------------------------------"; printf  "|%-17s|%-16s|\n",id,$3 }
END{
print "------------------------------------";
}'>> "$ifile"

当前输出如下所示。

EndpointUsage.csv

I want something like below.

EndpointUsage_09:55-Am_09_05_2015.csv
EndpointUsage_10.00-Am_09_05_2015.csv
EndpointUsage_10:05-Am_09_05_2015.csv

任何人都可以帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:1)

我编辑了您的脚本以满足您的需求,请参阅下文:

#!/bin/sh
ipath=/usr/local/nextone/bin
date=$(date +"%Y%m%d%H%M")
ifile=EndpointUsage$date.csv
"$ipath"/cli iedge list | awk '
BEGIN { print "------------------------------------";
    printf "|%-17s|%-16s|\n","Registration ID", "Ongoing Calls"
  }
/Registration ID/ { id = $3; next }
/Ongoing Calls/ {print "------------------------------------"; printf      "|%-17s|%-16s|\n",id,$3 }
END{
print "------------------------------------";
}'>> "$ifile"

我做的补充是

date=$(date +"%Y%m%d%H%M")
ifile=EndpointUsage$date.csv

Format the timestamp根据您的需要。

答案 1 :(得分:1)

您可以将ifile =行更改为类似的内容(使用' date'格式化您要将输出写入的路径/文件)

ifile="$(date '+/var/tmp/EndpointUsage_%I:%M-%p_%d_%m_%Y.csv')"

日期的人(或信息)页面包含您可以使用的所有占位符的列表。 http://linux.die.net/man/1/date