1

我正在尝试使用 sed 从 html 文件中删除模式。时间戳由一个 1-2 位数字、一个四个字母的单词和前一个单词组成

例子:

25 mins ago

或者:

1 hour ago

等等。我试过像这样使用 sed:

sed -i "s/([0-9]{1,2}) [a-z]* ago//g"

Sed 什么都不做,我不确定我的正则表达式是否错误,或者我是否没有以正确的方式转义字符。

编辑:我通过删除额外的空格来修复该表达式,谢谢 choroba。现在 sed 从文件中删除大部分文本。表达式需要不那么贪婪吗?还应该提到,时间戳被> < 示例包围:

>1 hour ago<

编辑:这对我有用。谢谢拉沃里。

sed -i 's/[0-9]\{,2\} [[:alpha:]]\{4,5\} ago//g'

任何帮助表示赞赏!

4

2 回答 2

3

试试下面的。您需要转义量词元字符{}使用sed

echo "1 hour ago" | sed  's/[0-9]\{,2\} [[:alpha:]]\{4\} ago//g'
于 2013-04-23T16:12:04.407 回答
0
 echo "1 hour ago" | sed -e 's/.*ago$//g'

或者

 sed -e 's/.*ago$//g' <filename>

ago这应该删除任何以in结尾的行filename

如果除了以 .结尾的时间戳之外还有其他行,您可能不想使用它ago。你没有具体说明。

于 2013-04-23T15:59:51.123 回答