sed strip将混合文本引导至某些角色

时间:2012-05-25 15:47:14

标签: regex sed

我有这样一句话:

14:32:38,723 [some text] ERROR - 更多文字.....

我想删除所有内容(但不包括)第一个“[”(以便结果是一行以[some text]开头.....)

我的阅读

's/^.*\d*\s//'

是它应该替换一个数字后跟一个空格的所有内容,但它似乎是在行中的任何地方应用替换,即贪婪。

我试过了:

's/^.*\s\[//g' 

但它首先剥离了“[”

如何修改任一表达式以满足我的需要? 非常感谢

2 个答案:

答案 0 :(得分:3)

我会应用以下sed命令

s/^[^[]*\[/\[/

它使用单个[替换第一个[的所有内容。

$ echo "14:32:38,723 [some text] ERROR - some more" | sed 's/^[^[]*\[/\[/'
[some text] ERROR - some more text 

答案 1 :(得分:2)

这可能对您有用:

sed 's/[^[]*//' file