2011-06-13 44 views
2

包圍多個字符我有以下內容的文件:SED刪除由數字

EMAIL|TESTNUMBER|DATE 

[email protected]|123456789|2011-02-08T16:36:02Z 

如何刪除大寫字母的日期和時間,Z之間T在使用sed行的結束?

謝謝!

回答

3

如果格式是固定的,每行總是匹配牛逼\ d \ d:\ d \ d:\ d \ DZ,那麼你可以嘗試簡單:

 
$ sed 's/T\(..:..:..\)Z$/ \1/' 

(未經測試)

0

貓它通過:

sed 's/\([0-9]+\)T\([0-9]+\)/\1\2//' | sed 's/Z$//' 

編輯 噢,我的!我剛剛意識到(謝謝@Fredrik)很長一段時間我浪費了流程!對我感到羞恥!現在我是一個過程的教會轉換。這裏是上面的祝福版本憎惡oneliner:

sed 's/\([0-9]+\)T\([0-9]+\)/\1\2//; s/Z$//' the_file.txt 
+0

不需要管道。您始終可以這樣做:sed -e cmd1 -e cmd2,它相當於sed cmd1 | sed cmd2 – 2011-06-13 12:58:00

+0

@William Pursell:酷:)我會在下次考慮它。 – Rajish 2011-06-13 13:02:08

+0

請做,否則人們會開始扔在你這http://partmaps.org/era/unix/award.html ;-) – 2011-06-13 21:32:57

0

也許有一個華麗的方式,但下面的腳本爲我工作:

s/\(....-..-..\)T\(.*\)/\1 \2/ 

s/Z$// 

比如...在綁定文件:

[email protected]|123456789|2011-02-08A16:36:02X 
[email protected]|123456789|2011-02-08T16:36:02Z 
[email protected]|123456789|2011-02-08B16:36:02Y 

輸出:

D:\>sed -f sedscr testfile 

[email protected]|123456789|2011-02-08A16:36:02X 
[email protected]|123456789|2011-02-08 16:36:02 
[email protected]|123456789|2011-02-08B16:36:02Y