Dan*_*iel 1 linux command-line awk shell-script text-processing
我有一个多列 csv 文件,逗号分隔,其中有两列日期不同(mm/dd/yyyy)。我将确定这两个日期之间的区别。以下是示例:
echo filename
001xxxc,28.2,03/04/2009,11/19/2009
00cvbfd,34.4,03/04/2009,01/06/2010
04rsdsd,34,12/01/2006,10/02/2001
456dfds,40,12/01/2006,04/23/2002
et556ss,40.8,12/01/2006,10/22/2002
Run Code Online (Sandbox Code Playgroud)
我想知道无论如何使用 awk 命令来获取日期差异。
我试过这个 awk 命令,但我确定这不是正确的方法?
awk -F, '{print $1","$2","$3-$4}' filename
Run Code Online (Sandbox Code Playgroud)
假设您想要以天为单位的差异,那么如果您有 GNU awk ( gawk
),您可以执行以下操作
gawk -F, '
{
split($3,a,"/");
split($4,b,"/");
t1 = mktime(sprintf("%d %d %d 0 0 0 0",a[3],a[1],a[2]));
t2 = mktime(sprintf("%d %d %d 0 0 0 0",b[3],b[1],b[2]));
print (t2-t1)/86400
}
' filename
260
308
-1886
-1683
-1501
Run Code Online (Sandbox Code Playgroud)
该mktime
参数必须是以下格式的字符串"YYYY MM DD HH MM SS [DST]"
; 将可选DST
标志设置为零告诉它忽略夏令时(否则天真除以 86400 会导致小数天)。
归档时间: |
|
查看次数: |
5118 次 |
最近记录: |