sed删除由数字包围的多个字符



我有一个包含以下内容的文件:

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

最新更新