2017-05-23 11 views
-3

私はMM/DD/YYYY形式の何千ものランダムな日付のテキストファイルを持っています。これらの日付のすべてをYY/MM/DDに変換する必要があります。 bashを使ってこれを行う最も簡単で簡単な方法は何ですか? ファイルには他のテキストコンテンツも含まれているため、日付を検索する必要があることに注意してください。bashを使用したテキストファイルの日付形式を変更する

+2

入力ファイルの代表的なスニペットを、これまでに試したことと失敗した方法と一緒に表示する必要があります。 –

答えて

0

でさえ、リモートで堅牢な、しかし、あなたは試してみてください:

perl -pe '[email protected]\b(\d{1,2})/(\d{1,2})/\d\d(\d\d)\[email protected]$3/$1/[email protected]' input 
+0

ありがとうございます。これは正しい出力を表示しましたが、どのようにファイルに書き込むことができますか? – freefly0313

+0

また、これは2桁の日付のみを出力します。私は4桁の日付が必要です – freefly0313

+0

あなたの質問では、2桁の日付を示すYY/MM/DDが必要であることを示しています。 4桁の数字が必要な場合は、開いている括弧を移動します。つまり、 '\ d \ d(\ d \ d)'は '(\ d \ d \ d \ d)'または '(\ d {4})'になります。ファイルに出力したい場合は、それをリダイレクトしてください。あるいは '-i'フラグを使います:' perl -pie ... ' –

0

sed付:

sed -i 's/\([0-9][0-9]\)\/\([0-9][0-9]\)\/[0-9][0-9]\([0-9][0-9]\)/\3\/\1\/\2/g' your_text_file 

利用-i.bakの代わりに、あなたが前に変更にバックアップするファイルをしたい場合-i

+0

はこの出力を持っています 'sed:1:" s /([0-9] [0-9])\ /([0-9] [...]:\ 3はRE' – freefly0313

+0

Iグローバルタグを追加するのを忘れましたが、それでもエラーは説明しません。上記のコマンドを正確にコピーしましたか?エラーは最後のグループのどこかにあるようです - '([0-9] [0-9]) ' – zwer

+0

はい、正しくコピーされました。同じエラー – freefly0313

関連する問題