BASH/AWK如何在给定的文本文件中将所有日期dd.mm.yyyy日期替换为dd月yy

BASH/AWK如何在给定的文本文件中将所有日期dd.mm.yyyy日期替换为dd月yy,bash,awk,Bash,Awk,如主题中所述,如何使用bash/awk在给定文本文件中仅替换格式为date dd.mm.yyyy的日期到格式为dd month yyy where month的日期(如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 przep

如主题中所述,如何使用bash/awk在给定文本文件中仅替换格式为date dd.mm.yyyy的日期到格式为dd month yyy where month的日期(如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
您可以使用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'{

对于(i=1;i)您在以下哪一步遇到问题:提取格式为
dd.mm.yyyyy
的日期,或者将这样的日期转换为
dd month yyyyy
?首先,我不知道如何访问文件,我知道如何在给定目录中执行某些操作,但不知道如何在文件中执行操作,我从这里开始?是否将文件作为输入?#!/bin/bash if[$#ne 1].[!-f$1]然后echo给出文本文件作为输入,退出1 fialso我没有使用权限-F@Vardius:答案是向您展示如何按照您在问题中提出的要求完成任务。请随意传入一个文件并在输入文件上运行awk脚本。现在如何从文本文件中以dd.mm.yyyy的形式获取特定日期?@Vardius:如果您可以粘贴小sni关于你的问题,我可以帮你解决。
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