我有一个包含以下内容的文件:
EMAIL|TESTNUMBER|DATE
somemail@address.com|123456789|2011-02-08T16:36:02Z
如何使用T
删除日期和时间与行尾的Z
之间的大写字母sed
?
谢谢!
答案 0 :(得分:3)
如果格式是固定的并且每一行总是匹配T \ d \ d:\ d \ d:\ d \ dZ,那么你可以尝试简单:
$ sed 's/T\(..:..:..\)Z$/ \1/'
(未测试的)
答案 1 :(得分:0)
Cat it through:
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
答案 2 :(得分:0)
也许有一种更高级的方式,但以下脚本对我有用:
s/\(....-..-..\)T\(.*\)/\1 \2/
s/Z$//
示例...入站文件:
somemail@address.com|123456789|2011-02-08A16:36:02X
somemail@address.com|123456789|2011-02-08T16:36:02Z
somemail@address.com|123456789|2011-02-08B16:36:02Y
输出:
D:\>sed -f sedscr testfile
somemail@address.com|123456789|2011-02-08A16:36:02X
somemail@address.com|123456789|2011-02-08 16:36:02
somemail@address.com|123456789|2011-02-08B16:36:02Y