包圍多個字符我有以下內容的文件:SED刪除由數字
EMAIL|TESTNUMBER|DATE
[email protected]|123456789|2011-02-08T16:36:02Z
如何刪除大寫字母的日期和時間,Z
之間T
在使用sed
行的結束?
謝謝!
包圍多個字符我有以下內容的文件:SED刪除由數字
EMAIL|TESTNUMBER|DATE
[email protected]|123456789|2011-02-08T16:36:02Z
如何刪除大寫字母的日期和時間,Z
之間T
在使用sed
行的結束?
謝謝!
如果格式是固定的,每行總是匹配牛逼\ d \ d:\ d \ d:\ d \ DZ,那麼你可以嘗試簡單:
$ sed 's/T\(..:..:..\)Z$/ \1/'
(未經測試)
貓它通過:
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
也許有一個華麗的方式,但下面的腳本爲我工作:
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
不需要管道。您始終可以這樣做:sed -e cmd1 -e cmd2,它相當於sed cmd1 | sed cmd2 – 2011-06-13 12:58:00
@William Pursell:酷:)我會在下次考慮它。 – Rajish 2011-06-13 13:02:08
請做,否則人們會開始扔在你這http://partmaps.org/era/unix/award.html ;-) – 2011-06-13 21:32:57