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