Regex 使用sed(bash)在模式之前提取字符串

Regex 使用sed(bash)在模式之前提取字符串,regex,bash,sed,Regex,Bash,Sed,我需要一些sed的帮助,以便在匹配模式后删除所有内容,并删除最后一个“(如果存在) 以这个字符串为例: The.100.S02E05.720p.HDTV.x264-KILLERS.mkv 除了最后一个“ 我想要的是: "The.100" 有没有人对此有一个很好的oneliner?听起来你几乎可以完全使用你在问题中的内容: sed 's/\.*S[0-9][0-9]E[0-9][0-9].*//' 这将匹配一个可选的字符,后跟您建议的模式(以及其后的任何内容),并将其替换为nothing。您

我需要一些sed的帮助,以便在匹配模式后删除所有内容,并删除最后一个
(如果存在)

以这个字符串为例:

The.100.S02E05.720p.HDTV.x264-KILLERS.mkv
除了最后一个

我想要的是:

"The.100"

有没有人对此有一个很好的oneliner?

听起来你几乎可以完全使用你在问题中的内容:

sed 's/\.*S[0-9][0-9]E[0-9][0-9].*//'
这将匹配一个可选的
字符,后跟您建议的模式(以及其后的任何内容),并将其替换为nothing。您在问题中缺少了一个
]
,我已添加了该字符

测试它:

$ sed 's/\.*S[0-9][0-9]E[0-9][0-9].*//' <<<'The.100.S02E05.720p.HDTV.x264-KILLERS.mkv'
The.100
$sed's/\.*s[0-9][0-9]E[0-9][0-9]./'