姬長信(Redy)

linux – 为什么我不需要在sed中转义字符类…


我和sed很困惑.
我有一个包含以下内容的文件:
[ 2014/02/10 14:45:15 | INFO   ] Saving data for customer: 273667  
[ 2014/02/10 14:45:15 | INFO   ] Saving data for customer: 273687  
[ 2014/02/10 14:45:15 | INFO   ] Saving data for customer: 272667  
[ 2014/02/10 14:45:15 | INFO   ] Saving data for customer: 373667  
[ 2014/02/10 14:45:15 | INFO   ] Saving data for customer: 573667  
[ 2014/02/10 14:45:15 | INFO   ] Saving data for customer: 263667  

我想删除除客户ID之外的所有内容.所以我运行以下内容:

$sed 's/^.*:/s/(/[0-9/]/{6/}/)//1/g' customers.txt > customers2.txt  

这并没有做任何事情.
在考虑之后(以及很多挫折)我试图从[]中删除逃脱.所以我运行以下内容:

$sed 's/^.*:/s/([0-9]/{6/}/)//1/g' customers.txt > customers2.txt    

这很有效.
但现在我无法理解sed是如何工作的.为什么我需要逃避(对于分组和{范围而不是[对于角色类?