0

トピックのように、指定されたテキスト ファイルで 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
4

1 に答える 1

2

次のように、gnu awk (gawk) の時間機能を使用できます。

echo "18.11.2012" | awk -F"." '{t=mktime($3 " " $2 " " $1 " 00 00 00");
     print strftime("%d %B %Y", t)}'

ライブデモ: http://ideone.com/Jmz77N

必要に応じて -F の代わりに FS を使用します。

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

新しいデモ: http://ideone.com/PoMsU3

于 2013-04-15T17:17:56.047 に答える