0

次の形式の csv タイムスタンプ データがあります。

8.11.2012 16:15:10
21.11.2012 15:00:54
11.11.2012 0:24:24
8.11.2012 16:06:53
9.11.2012 0:49:37

それぞれに1桁の数字を付けに、このような特別なタイムスタンプ形式を適用したい:

08_11_2012_16_15_10
21_11_2012_15_00_54
11_11_2012_00_24_24
08_11_2012_16_06_53

正規表現、検索、置換を試しましたが、次のようになりました。

8_11_2012_16_15_10
21_11_2012_15_00_54
11_11_2012_0_24_24
8_11_2012_16_06_53

おそらくシェル awk を使用して、別のアイデアを持っている人はいますか?

4

1 に答える 1

0

2回のパスでそれを行うことができます。データ ファイルに決して出現しない文字または文字の短いシーケンスを見つけます。ここを利用=#=します。最初のパスは、すでに試したものと非常に似ていますが、=#=02 桁の数字に変換する必要があるすべての数字の前に追加します。したがって、8.11.2012 16:15:10は に変更され=#=08_=#=011_2012_=#=016_=#=015_=#=010ます。2 番目のパスでは=#=、正規表現検索を使用して と不要なゼロを削除し、=#=0*(\d\d[^\d])で置き換え\0ます。

ファイルに日付と時刻のみが含まれている場合は、既に試みた変更を行う前に、先頭のゼロをテキストに追加できる場合があります。正規表現で検索し\b(\d)\bて置換する0\1と、任意の 1 桁が 2 桁に変換されます。は単語の境界を検索するため、1 桁として認識され\b(\d)\bず、単語の一部と見なされることに注意してください。検索して置換しようとすると、行またはファイルの開始と終了が必要に応じて処理されない可能性があるため、うまく機能しません。また、処理するために 2 回実行する必要があります。_6_\b_([^\d])(\d)([^\d])\10\2\36.5.2013

于 2013-06-17T15:24:03.653 に答える