0

次の入力が与えられた場合

506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,04/26/2012,

行の最後で日付をフィルタリングしたいので、その mm/dd/yyyy 形式を MySQL 日付形式 yyyy-mm-dd に変更できます。

最初に末尾の「,」(コンマ)を削除して、行の最後の日付と一致させようとしています。

{
    s/,$//g
    /\([0-9][0-9]\)\/\([0-9][0-9]\)\/\([0-9][0-9][0-9][0-9]\)$/=
}

12847 を取得していますが、04262012 を期待しています。

そこにある日付と一致することさえできないという私は何を間違っていますか?

ありがとう。

4

2 に答える 2

3

これはあなたのために働くかもしれません:

echo "506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,04/26/2012," | 
sed 's|,\(..\)/\(..\)/\(....\),$|,\3-\2-\1,|'
506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,2012-26-04,

日付のみが必要な場合:

echo "506028500,1820196768,43,0,84552257, ,1,-71.16,42.42,04/26/2012," | 
sed 's|.*,\(..\)/\(..\)/\(....\),$|\3-\2-\1|'
2012-26-04
于 2012-06-05T20:30:50.030 に答える
2

これは私のために働く:

sed "s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/g" someFile.txt

少なくとも、日付文字列を目的の形式のいずれかに置き換えます。

最後に日付のみを印刷するには、次のようにします。

sed "s/.*\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/g" someFile.txt
于 2012-06-05T19:34:41.770 に答える