如何从字符串中删除时间日期戳

时间:2016-03-09 17:27:39

标签: regex bash awk sed

你好sed / awk / bash专家,

我有数以千计的证书要报告,我想删除时间:

www.bob.com  | Jul 28 19:22:38 2015   | Jul 27 19:22:38 2017 

我怎样(轻松)删除19:22:38& 19:22:38所以我只有:

www.bob.com  | Jul 28 2015 | Jul 27 2017 

4 个答案:

答案 0 :(得分:1)

如果您使用旧版本的sed,可以尝试以下操作:

$ echo "www.bob.com  | Jul 28 19:22:38 2015   | Jul 27 19:22:38 2017" | sed 's/\([a-zA-Z]*[ ]*[0-9]*[ ]*\)[0-9:]*\([ ]*[0-9]*\)/\1\2/g'
www.bob.com  | Jul 28  2015   | Jul 27  2017

或者也许只是删除时间,你可以改为使用:

echo "www.bob.com  | Jul 28 19:22:38 2015   | Jul 27 19:22:38 2017" | sed 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]//g'
www.bob.com  | Jul 28  2015   | Jul 27  2017

答案 1 :(得分:1)

如果您要编辑文件而不是仅输出到屏幕,请使用anubhava命令的修改版本:

sed -E 's/[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}[[:blank:]]+//g' file > file.tmp && mv file.tmp file

如果sed失败,它还具有不擦除原始文件的额外好处。请参阅here

答案 2 :(得分:1)

awk '{$5=""; $10=""; print}' file
www.bob.com | Jul 28  2015 | Jul 27  2017

答案 3 :(得分:0)

使用sed

sed -E 's/[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}[[:blank:]]+//g' file

www.bob.com  | Jul 28 2015   | Jul 27 2017