我有一個日誌文件,並在它的每一行是這樣的:轉換時間戳日期時間與sed的
timestamp=1356431101, entity=xxx, event: xxxxxx
現在我想用sed來代替時間戳問心無愧人類可讀的日期時間:
timestamp=2012-12-24 10:00:00, entity=xxx, event:xxxxx
我的命令是:
sed "s/^timestamp=\([0-9]\{10\}\),/timestamp=\`date +%D [email protected]\1\`,/"
但問題是,\1
不能由10位數字timesta被取代相反,它總是被視爲數字1
。誰能告訴我如何解決這個問題?先謝謝你!
我會用'perl' :) – squiguy
'sed'不支持反引號。 shell在參數列表中用'1'調用日期,並將結果傳遞給'sed'。使用不同的工具。 (或者認識到,紀元時間戳*是人類可讀的!) –
由於'1356431101 = 2012-12-25 10:25:01 +00:00',這是很不清楚,有任何時區,你可以得到您在示例中指定的轉換(您通常不能指定偏移量不是60秒倍數的時區)。正如其他人所說,「sed」不是這項任務的正確工具。我會使用Perl,但是您可以使用Python或Ruby或任何現代腳本語言;其中任何一種都比'sed'更適合這個任務(我喜歡'sed',但我認識到它的侷限性)。 –