我有一个非常大的日志文件,每小时需要处理并保存为csv格式。
格式如下(在使用sed删除许多字符后,此行也是如此)
Apr-05 11:10:12 xxxx xxx xxxx xxxx xxxx
我需要另存为
04-05 11:10:12,xxxx,xxx,xxxx,xxxx,xxxx
我尝试使用$ 1设置变量,并尝试使用GNU日期将其转换,但不起作用
awk -v fixdate="($1 +%m-)" '{print fixdate"-"$2" "$3 "," $x "," $y "," $z}'
我更喜欢单行方法。
如何在打印前将$ 1(Apr-05)部分分配给awk变量并使用GNU日期对其进行处理。
您能不能尝试以下内容。考虑到您的Input_file每个月有3个字母,如果没有,请相应地更改split
的数组,然后它应该可以工作。
awk '
BEGIN{
FS=OFS="-"
num=split("jan feb mar apr may jun jul aug sep oct nov dec",array," ")
for(i=1;i<=num;i++){
month[array[i]]=sprintf("%02d",i)
}
}
{
$1=tolower($1) in month?month[tolower(tolower($1))]:$1
}
1
' Input_file