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

时间:2014-11-23 20:16:44

标签: regex bash sed

我需要一些帮助sed在匹配模式后删除所有内容并删除最后一个"."如果它存在..

以此字符串为例:

The.100.S02E05.720p.HDTV.x264-KILLERS.mkv

除了最后"S[0-9][0-9]E[0-9[0-9]"

之外,我希望模式"."之前的所有内容

我想要的是什么:

"The.100"

有没有人有这个伟大的oneliner?

1 个答案:

答案 0 :(得分:2)

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

sed 's/\.*S[0-9][0-9]E[0-9][0-9].*//'

这匹配一个可选的.字符,后跟您建议的模式(及其后的任何内容),替换为空。您在问题中遗漏了],我已添加。

测试出来:

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