首页 > 解决方案 > 如何删除两个短语之间的时间戳?

问题描述

需要从短语 “已导入日期为 Thu Apr 11 13:19:02 2019 的日志文件”中删除唯一时间戳: “Thu Apr 11 13:19:02 2019” 。仅使用sed命令(必需条件)。

注意:请注意输入文件包含两个短语!!!

https://unix.stackexchange.com/questions/88382/using-sed-to-delete-everything-between-two-words

/^Log file dated/,/have been imported./{/^Log file dated/!{/have been imported./!d}}

不幸的是,当我们在一个文件中有两个短语时,这不起作用。

标签: bashsed

解决方案


感谢帮助!

这是我的同事发现的另一种工作方法,它使用“[TIMESTAMP]”文本代替唯一时间戳:

s/[A-Za-z]\{3\}.[A-Za-z]\{3\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}/[TIMESTAMP]/g

在 bash 控制台中测试:

echo "Log file dated Thu Apr 11 13:19:02 2019 have been imported." | sed 's/[A-Za-z]\{3\}.[A-Za-z]\{3\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}/[TIMESTAMP]/g'

Input text: "Log file dated Thu Apr 11 13:19:02 2019 have been imported."

Output text: "Log file dated [TIMESTAMP] have been imported."

推荐阅读