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

时间:2011-06-13 12:46:40

标签: sed character

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

EMAIL|TESTNUMBER|DATE

somemail@address.com|123456789|2011-02-08T16:36:02Z

如何使用T删除日期和时间与行尾的Z之间的大写字母sed

谢谢!

3 个答案:

答案 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