包围多个字符我有以下内容的文件:SED删除由数字
EMAIL|TESTNUMBER|DATE
[email protected]|123456789|2011-02-08T16:36:02Z
如何删除大写字母的日期和时间,Z
之间T
在使用sed
行的结束?
谢谢!
包围多个字符我有以下内容的文件:SED删除由数字
EMAIL|TESTNUMBER|DATE
[email protected]|123456789|2011-02-08T16:36:02Z
如何删除大写字母的日期和时间,Z
之间T
在使用sed
行的结束?
谢谢!
如果格式是固定的,每行总是匹配牛逼\ d \ d:\ d \ d:\ d \ DZ,那么你可以尝试简单:
$ 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$//
比如...在绑定文件:
[email protected]|123456789|2011-02-08A16:36:02X
[email protected]|123456789|2011-02-08T16:36:02Z
[email protected]|123456789|2011-02-08B16:36:02Y
输出:
D:\>sed -f sedscr testfile
[email protected]|123456789|2011-02-08A16:36:02X
[email protected]|123456789|2011-02-08 16:36:02
[email protected]|123456789|2011-02-08B16:36:02Y
不需要管道。您始终可以这样做:sed -e cmd1 -e cmd2,它相当于sed cmd1 | sed cmd2 – 2011-06-13 12:58:00
@William Pursell:酷:)我会在下次考虑它。 – Rajish 2011-06-13 13:02:08
请做,否则人们会开始扔在你这http://partmaps.org/era/unix/award.html ;-) – 2011-06-13 21:32:57