次の日付の形式のテキストファイルがあります dd/mm/yyyy
:
14/09/1992
15/04/1983
15/09/1961
02/06/1979
14/12/1971
08/02/2001
19/06/1999
14/09/1969
31/08/2002
30/07/1980
25/04/1973
03/01/1992
これをに変換したい YYYY/mm/dd
スクリプトでフォーマットします。私はそうするためにdateコマンドを使用することを計画していました:
date -f tempDate +%Y/%m/%d
しかし、問題は、英語スタイルの日付を認識せず、次のエラーを表示することです。 mm/dd/yyyy
私がそれを望まないとき:
date: invalid date `14/09/1992"
これを行う別の方法はありますか?または、日付形式の順序を変更する方法はありますか?
また、システム管理者ではないサーバーでこのスクリプトを機能させる必要があります。
回答:
回答№1の場合は3ファイルが説明どおりの場合は、列を逆にしてください。 awk
:
$ awk "BEGIN{FS=OFS="/"}{print $3,$2,$1}" file
1992/09/14
1983/04/15
1961/09/15
1979/06/02
1971/12/14
2001/02/08
1999/06/19
1969/09/14
2002/08/31
1980/07/30
1973/04/25
1992/01/03
編集:
で同じように簡単 awk
複数フィールド区切り文字付き:
$ awk -F[/,] "{print $1","$2","$5"/"$4"/"$3}" <<< "name,number,14/09/1992"
name,number,1992/09/14
回答№2については4
クイックawkスクリプトを使用して、年/月/日の順序に変更できます。
awk -F "/" "{print $3"/"$2"/"$1}" < file.txt
答え№3の2
少なくともMacOS Xでは、 -f
現在までのオプションは次のように文書化されています。
-f
デフォルトを使用するのではなく、提供されたnew_dateを解析するためのフォーマット文字列としてinput_fmtを使用します[[[mm]dd]HH]MM[[cc]yy][.ss]
フォーマット。解析はを使用して行われますstrptime(3)
.
したがって、次のものを使用する必要があります。
date -f "%d/%m/%Y" +"%Y-%m-%d" ...
ただし、残りの問題は複数の値の変換です。の複数の呼び出しが必要です date
そのため、次のようなことを試してみたいと思います。
# Bogus code
while read date # Bogus code
do date -f "%d/%m/%Y" $date +"%Y-%m-%d" # Bogus code
done < tempDate # Bogus code
# Bogus code
ただし、これはシステムクロックを設定しようとします( root
当時、あなたはすべきではありません root
実験時)。だから、取得するための明白な方法はありません date
あなたがやりたいことをするコマンド。
したがって、を使用して答え awk
, sed
, perl
, python
日付をマップするための正規表現が最適です。
回答№4の場合は1
国際標準の日付形式であるISO8601は、 YYYY-MM-DD
、ない YYYY/MM/DD
。非常に正当な理由がない限り、それを使用することをお勧めします。
米国と英国の日付形式は、毎月13日より前の日付ではあいまいであるため、驚くことではありません。 date
認識されません。特定の文字列が英国形式であることを伝える方法はありますが、それが何であるかはわかりません。
あなたは使うことができます sed
、または正規表現の置換を行うその他のツールを使用して、形式を変更します。
$ echo 14/09/1992 | sed "s/([0-9][0-9])/([0-9][0-9])/([0-9][0-9][0-9][0-9])/3-2-1/"
1992-09-14
Perlはこれを少し冗長に行うことができます:
$ echo 14/09/1992 | perl -pe "s/(dd)/(dd)/(dddd)/$3-$2-$1/"
1992-09-14
または:
$ echo 14/09/1992 | perl -pe "s/(d{2})/(d{2})/(d{4})/$3-$2-$1/"
1992-09-14
回答№5の場合は0
Windowsを使用している場合は、地域の設定を変更して、コンピューター全体、特に.csvファイルの日付形式を変更することもできます。
Win7:
1. /スタートボタンに移動 2. /コントロールパネルを選択 3. /時計、言語、地域。 4. /日付、時刻、数値の形式を変更します。