3

次のようなircログがあります

04/14/13 21:38<@Hamatti> Lorem ipsum dolor sit amet
04/14/13 21:39<@Hamatti> consectetur adipiscing elit.
04/14/13 21:45<@Hamatti> Duis facilisis convallis lacus

編集1。申し訳ありませんが、私の意図が明確ではありませんでした。だから私は前の出力を

21:38<@Hamatti> Lorem ipsum dolor sit amet
21:39<@Hamatti> consectetur adipiscing elit.
21:45<@Hamatti> Duis facilisis convallis lacus

だから時間が大事。

EDIT2 ログの一部もあり、以前のものは形式が

20:12<@Hamatti> Something.
20:13<@Hamatti> Funny.
20:13<@Hamatti> Happened.

これらの行は変更されないようにする必要があります。

古いログは日付スタンプのない形式であるため、後のログから日付を削除したいと考えています。

sed 's/[0-9]{2}\/[0-9]{2}\/[0-9]{2}//g' logfile

sed の正規表現は正規表現テスターで動作するようですが、この sed は何もしていません。問題はどこにあるのだろうか?bash ツール (sed、awk など) に関するヒントは大歓迎です。ログの一部だけに日付があるため、次のようなものは使用できません

awk '{$1 = ""; print}'

最初にチェックが必要だからです。

4

2 に答える 2

6

この sed コマンドは仕事をします:

sed -i.bak 's/^[^<]*//' logfile

編集:あなたのコメントに基づいて、これは日付部分のみをクリアし、タイムスタンプを保持します:

sed -i.bak 's/^[^ ]* //' logfile

EDIT 2: 2回目の編集された質問に基づいて:

sed -i.bak 's#^[0-9]*/[0-9]*/[0-9]* ##' logfile

または、次のように sed で拡張正規表現機能を使用します。

マック:

sed -E -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile

Linux:

sed -r -i.bak 's#^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2} ##' logfile
于 2013-04-15T06:24:01.190 に答える