Sed使用regex从文件中删除时间戳

Sed使用regex从文件中删除时间戳,regex,linux,bash,sed,Regex,Linux,Bash,Sed,我正在尝试使用sed从html文件中删除模式。时间戳由一个1-2位数字、一个四个字母的单词和一个单词ago组成 例如: 25 mins ago 或: 等等。我尝试过这样使用sed: sed -i "s/([0-9]{1,2}) [a-z]* ago//g" Sed什么都不做,我不确定我的正则表达式是否错误,或者我是否没有正确地转义字符 编辑:我通过删除一个额外的空格来修复这个表达式,谢谢choroba。现在sed从文件中删除文本的mos。表达式需要不那么贪婪?还应该提到的是,ever tim

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

例如:

25 mins ago
或:

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

sed -i "s/([0-9]{1,2}) [a-z]* ago//g"
Sed什么都不做,我不确定我的正则表达式是否错误,或者我是否没有正确地转义字符

编辑:我通过删除一个额外的空格来修复这个表达式,谢谢choroba。现在sed从文件中删除文本的mos。表达式需要不那么贪婪?还应该提到的是,ever time stamp被
>
或

sed-e的/*ago$//g'
这将删除
filename


如果除了以
ago
结尾的时间戳之外还有其他行,则可能不希望使用此选项。您没有指定。

请尝试以下操作。您需要使用
sed转义量词元字符
{
}

echo "1 hour ago" | sed  's/[0-9]\{,2\} [[:alpha:]]\{4\} ago//g'

*
后面有两个空格。谢谢,这有用吗?它删除了文件中的所有文本。关于如何减少贪心,你有什么想法吗?一个示例文件是什么样子的?在命令运行后,预期的结果是什么?在表达式上运行sed命令后,你想保留什么?您想将
>保留为HTML文件吗。我希望它能删除匹配1-2个didgits,然后是小时或分钟,然后是ago的字符。这不行,它需要是动态的,它的范围从1分钟到59,1小时到24,所以你想删除
Hello ago
吗?@almyz125:
*
前面的ago处理任何字符。正如OP所指出的,它还将删除
之前的任何字符串。所以从1-60分钟到1-24小时应该不是问题,明白了。但这不会删除我文件中的所有字符吗?我还应该提到,ever time stamp被>time stamp包围Here@almyz125:为了得到更具体的答案,你必须在你的问题中更具体一些。谢谢你,这就像一个符咒,我不得不编辑它一点sed-i,使它成为{4,5},因为我是个白痴,忘记了小时是5个字母长。谢谢sed-i的/[0-9]\{,2\}[:alpha:]\{4,5\}年前//g'
>1 hour ago<
sed -i 's/[0-9]\{,2\} [[:alpha:]]\{4,5\} ago//g'
 echo "1 hour ago" | sed -e 's/.*ago$//g'
 sed -e 's/.*ago$//g' <filename>
echo "1 hour ago" | sed  's/[0-9]\{,2\} [[:alpha:]]\{4\} ago//g'