我有一个包含以下内容的文件:
EMAIL|TESTNUMBER|DATE
somemail@address.com|123456789|2011-02-08T16:36:02Z
如何使用sed
删除日期和时间之间的大写字母T
和行尾的Z
?
谢谢!
如果格式是固定的,并且每行总是匹配T\d\d:\d:\d\dZ,那么您可以尝试简单的:
$sed的s/T\(..:..:..\)Z$/\1/'
(未测试)
也许有一种更理想的方法,但以下脚本对我有效:
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
遍历:
sed 's/([0-9]+)T([0-9]+)/12//' | sed 's/Z$//'
编辑天啊!我刚刚意识到(感谢@Fredrik)很长一段时间以来我浪费了流程!我真可耻!现在我是一个过程教会的皈依者。这是上面提到的oneliner的幸运版本:
sed 's/([0-9]+)T([0-9]+)/12//; s/Z$//' the_file.txt