She*_*Psy 4 awk type-conversion
我试图报告每个日期创建的文件数.我可以用这个小衬里做到这一点:
ls -la foo*.bar|awk '{print $7, $6}'|sort|uniq -c
Run Code Online (Sandbox Code Playgroud)
我也得到很多fooxxx.bar文件是如何被创建日期列表,但当月的格式为:AAA(即:4月),我想XX(即:04).
我觉得答案就在这里:
awk '
BEGIN{
m=split("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",d,"|")
for(o=1;o<=m;o++){
months[d[o]]=sprintf("%02d",o)
}
format = "%m/%d/%Y %H:%M"
}
{
split($4,time,":")
date = (strftime("%Y") " " months[$2] " " $3 " " time[1] " " time[2] " 0")
print strftime(format, mktime(date))
}'
Run Code Online (Sandbox Code Playgroud)
但是不知道我需要剥离什么,也不知道如何将7美元转移到我开辟的任何东西以将4月转换为04.
谢谢!
Ed *_*ton 12
这是将缩写的月份名称转换为awk中的数字的惯用方法:
$ echo "Feb" | awk '{printf "%02d\n",(index("JanFebMarAprMayJunJulAugSepOctNovDec",$0)+2)/3}'
02
$ echo "May" | awk '{printf "%02d\n",(index("JanFebMarAprMayJunJulAugSepOctNovDec",$0)+2)/3}'
05
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息来解决问题,请告诉我们.
只需使用月份的字段编号作为数组的索引即可months。
print months[$6]
Run Code Online (Sandbox Code Playgroud)
由于ls输出因系统而异,有时在同一系统上取决于文件年龄,并且您没有给出任何示例,因此我无法知道如何进一步指导您。
哦,不要解析ls。