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

sed删除由数字包围的多个字符,sed,character,Sed,Character,我有一个包含以下内容的文件: EMAIL|TESTNUMBER|DATE somemail@address.com|123456789|2011-02-08T16:36:02Z 如何使用sed删除日期和时间之间的大写字母T,以及行尾的Z 谢谢 如果格式是固定的,并且每行始终与T\d\d:\d\d:\d\dZ匹配,那么您可以尝试以下简单方法: $ sed 's/T\(..:..:..\)Z$/ \1/' $sed's/T\(..:..\)Z$/\1/' (未测试)通过以下方式对其进行分类: s

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

EMAIL|TESTNUMBER|DATE

somemail@address.com|123456789|2011-02-08T16:36:02Z
如何使用
sed
删除日期和时间之间的大写字母
T
,以及行尾的
Z


谢谢

如果格式是固定的,并且每行始终与T\d\d:\d\d:\d\dZ匹配,那么您可以尝试以下简单方法:

$ sed 's/T\(..:..:..\)Z$/ \1/' $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$//
示例…在绑定文件中:

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-ecmd1-ecmd2,它相当于sed cmd1 | sedcmd2@William珀塞尔:酷:)下次我会考虑的。请考虑,否则人们会开始向你扔这个;-)