当前位置: 首页 > 面试题库 >

用AWK递增日期数天和数月

从烈
2023-03-14
问题内容

AWK的增加日期

大家好,我需要您的帮助。我有一个文件“ test.csv”,我想增加“ 6个月”和“ 10天”的日期,以便获得以下输出:

test.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE"
"000003","TEST3","2013-05-09 16:02:07","ACTIVE"
"000004","TEST4","2013-05-10 16:02:07","ACTIVE"
"000005","TEST5","2013-05-11 12:02:07","ACTIVE"

输出test-increment-10days.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-05-17 16:02:07"
"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-05-19 16:02:07"
"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-05-20 16:02:07"
"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-05-21 12:02:07"

输出test-increment-6months.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-11-07 16:02:07"
"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-11-09 16:02:07"
"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-11-10 16:02:07"
"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-11-11 12:02:07"

我已经尝试使用以下命令:

awk -F“ \” ,\“ ”’{{cmd =“ date \” +%Y-%m-%d%T \“ -d \”“ $ 3” +10天\“”; cmd
| 盖特琳原点; 关闭(cmd); 打印$ 0“,\”“基准” \“”}}’test.csv> test-increment-10days.csv

awk -F“ \” ,\“ ”’{{cmd =“ date \” +%Y-%m-%d%T \“ -d \”“ $ 3” +6个月\“”; cmd
| 盖特琳原点; 关闭(cmd); 打印$ 0“,\”“基准” \“”}}’test.csv> test-increment-6months.csv

但是我得到了错误的输出。

test-increment-10days.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-05-08 16:02:07"
"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-05-10 16:02:07"
"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-05-11 16:02:07"
"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-05-12 12:02:07"

test-increment-6months.csv:

"000001","TEST1","2013-05-07 16:02:07","ACTIVE","2013-06-07 16:02:07"
"000003","TEST3","2013-05-09 16:02:07","ACTIVE","2013-06-09 16:02:07"
"000004","TEST4","2013-05-10 16:02:07","ACTIVE","2013-06-10 16:02:07"
"000005","TEST5","2013-05-11 12:02:07","ACTIVE","2013-06-11 12:02:07"

“ test-increment-10days.csv”中的日期仅增加一天,而在“ test-
increment-6months.csv”中仅增加一个月。希望有人能帮忙。


问题答案:

尝试这个:

awk -F"\",\"" '{cmd="date -d \"$(date -d \""$3"\")+10days\" \"+%Y-%m-%d %T\"";cmd | getline datum; close(cmd); print $0 ",\""datum"\""}' test.csv > test-increment-10days.csv

基础日期命令的一个示例是:

date -d "$(date -d '2013-05-07 16:02:07')+10days" "+%Y-%m-%d %T"

有两个date命令。内部将date创建一个具有指定值的日期。然后再添加10天。外部日期创建一个新的递增日期并设置其格式



 类似资料:
  • 问题内容: 我想将天数添加到当前日期:我正在使用以下代码: 但是我没有得到适当的日期,而是得到了: 2592000 请提出建议。 问题答案: 这应该是 期望得到一个包含美国英语日期格式的字符串,并将尝试将该格式解析为相对于现在给出的时间戳的Unix时间戳(自1970年1月1日00:00:00UTC以来的秒数)。当前时间(如果未提供)。 而 返回一个字符串,该字符串根据给定的格式字符串使用给定的整数

  • 该程序应该提示用户输入日期,它会自行递增。我遇到了DateTest类的问题。错误消息说“无法在数组类型Date[]上调用nextDay()” 已更新 我删除了不必要的语句。但是现在我收到了这个错误消息, 错误:在类Date中找不到Main方法,请将Main方法定义为:public static void Main(String[]args) 我必须把主要方法移动到任何地方吗?

  • 问题内容: 我的将日期添加一天的代码返回添加日期之前的日期: 添加一天之后的日期应滚动到下个月: 我以前使用过非常相似的代码,我在这里做错了什么? 问题答案: 对于PHP 5.2.0+,您还可以执行以下操作:

  • 问题内容: 我有一个现有的日期对象,希望将其增加一天,同时将其他所有字段保持不变。我遇到的每个示例都耗时数小时/分钟/秒,或者您必须创建一个新的日期对象并转移字段。有没有一种方法可以将日字段提前1? 谢谢 编辑:对不起,我并不是说要把当天的值增加一,我的意思是将日期提前1 问题答案: Calendar c = Calendar.getInstance(); c.setTime(yourdate);

  • 为了计算月租金,我试图显示两个日期之间的差异,我期望月和日的确切数量,因为合同是“每月”的,所以如果是2月、3月或4月,每月的金额是固定的。比如说:Strat_D=05-Aug-2020 End_D=20-Sept-2020我用这个代码来计算天数: 输出为:45,但预期为:1个月 如果我使用: 输出为:1,但预期:1.5 提前谢谢

  • 我有一个大约有500行信息的文本文件。 有没有什么方法可以使用awk和sed实现这一点呢?