如主题如何在给定的文本文件中使用bash / awk替换文件中的日期格式为日期dd.mm.yyyy到日期格式dd月yyyy其中月份(如02到2月等)
输入文件:
kandal w Rosji. "Polacy są niezbyt kreatywni 12.12.2032
43.12.4521 Dramatyczne wyznanie córki gen. Jaruzelskiego
Politycy chcą,
23/32/3211 by Tusk przeprosił Benedykta XVI
Nie żyje wybitny historyk prof. Andrzej Garlicki
Polityk PiS: Śląsk należy przywrócić Polsce
答案 0 :(得分:2)
你可以使用这样的gnu awk(gawk)时间功能:
echo "18.11.2012" | awk -F"." '{t=mktime($3 " " $2 " " $1 " 00 00 00");
print strftime("%d %B %Y", t)}'
根据需要使用FS而不是-F:
awk 'BEGIN {FS="."} {t=mktime($3 " " $2 " " $1 " 00 00 00");
print strftime("%d %B %Y", t)}'
awk '{
for(i=1; i<=NF; i++) {
if ($i ~ /[0-9][0-9]\.[0-9][0-9]\.[1-9][0-9][0-9][0-9]/) {
split($i, a, ".");
t=mktime(a[3] " " a[2] " " a[1] " 00 00 00");
if (t == -1)
printf("%s", $i);
else
printf("%s", strftime("%d %B %Y", t));
}
else
printf("%s", $i);
if (i<NF)
printf(" ");
}
printf("\n");
}' inputFile