Unix - 删除与正则表达式匹配的部分



我有一个日志文件,我正在尝试整理它以使用里面的一些数据。 我想使用类似sed 's/foo//g'的东西,除了我希望它删除从 foo 到下一个空格的所有内容,而不是匹配单词 foo。

我试过(没有成功(:

sed -e -- 's/(?<=foo)(.*)(?= )//g'

有什么想法吗?

我希望它删除从foo到下一个空格的所有内容。

您可以使用:

sed 's/foo[^[:blank:]]*//g' file

[^[:blank:]]将匹配任何不是空格和制表符的字符。

我会这样做:

fooS*(?=s)

S是非空格字符。它具有积极的前瞻,不属于匹配的一部分,因此您可以删除整个匹配项。演示。

编辑:实际上,使用单词边界更容易更好:

fooS*b

演示。现在foobar也可以排在队伍的尽头。

最新更新