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

Regex Unix-删除与正则表达式匹配的部分,regex,bash,unix,sed,Regex,Bash,Unix,Sed,我有一个日志文件,我正试图整理它,以便使用其中的一些数据。 我想使用类似于sed's/foo//g'的东西,除了要删除foo中的所有内容,而不是匹配单词foo,直到下一个空格 我试过(没有成功): sed-e--'s/(? 我希望它删除从foo到下一个空格的所有内容 您可以使用: sed 's/foo[^[:blank:]]*//g' file [^[:blank:][]将匹配任何不是空格和制表符的字符。我将这样做: foo\S*(?=\s) \S是一个非空白字符。它有一个不属于匹配项的正向

我有一个日志文件,我正试图整理它,以便使用其中的一些数据。 我想使用类似于sed's/foo//g'的东西,除了要删除foo中的所有内容,而不是匹配单词foo,直到下一个空格

我试过(没有成功):

sed-e--'s/(? 我希望它删除从foo到下一个空格的所有内容

您可以使用:

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

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

我将这样做:

foo\S*(?=\s)
\S
是一个非空白字符。它有一个不属于匹配项的正向前瞻,因此您可以删除整个匹配项

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

foo\S*\b

.现在,
foobar
也可以排在这行的末尾。

谢谢!非常有魅力。非常聪明的否定。