
私のファイルには次の行が含まれています
15.07.2015 12:24:47; +107.117 ; +106.925 ; +17.179 ; +102.099 ; +16.151
最初のものは非標準形式のタイムスタンプです。これを次の形式にインライン化するにはどうすればよいですか?
2015-07-15 12:24:47; +107.117 ; +106.925 ; +17.179 ; +102.099 ; +16.151
答え1
適切なパターンでSEDを使用し、s#([0-9]{2})\.([0-9]{2})\.([0-9]{4})#\3-\2-\1#
必要に応じて行アンカーの開始を一致させることでより強力にすることができます。
答え2
Perl one-linerを使うもう一つの方法は次のとおりです。
$ perl -i -ne 's/^(\d{2})\.(\d{2})\.(\d{4})/$3-$2-$1/; print' in.txt
$ cat in.txt
2015-07-15 12:24:47; +107.117 ; +106.925 ; +17.179 ; +102.099 ; +16.151