从列表中的某些分隔字段中剥离文本

想知道最快的方法是从列表中的一些分隔字段中去除文本。

我的列表如下所示:
text text:number:text:text:text:text:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*

我希望它看起来像这样:
text text:*:*:*:*:text:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*:*

所以一些有数据的字段需要用星号代替,一些字段需要不变,而分隔符不一致(第一和第二字段用空格分隔)。 这是在一个Linux文件系统,并在文件上内联的方式是首选。

非常感谢您的帮助!

我会使用一个正则expression式匹配你的文本(圆括号捕捉文本到\ 1,\ 2等指定的缓冲区):

 (.*):([0-9]+):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*):(.*) 

并replace正则expression式:

 \1:\2:\*:\*:\*:\6:\*:\*:\*:\*:\*:\* 

与sed:

 sed 's/matching-regularexpression/replacement-regular-expression/' name-of-text-file 

根据你的shell,你可能不得不摆弄一些转义字符。

我可能会在Perl中做到这一点:

perl -pi.bak -e's / ^(\ w + \ s \ w +):\ d +:\ w +:\ w +:\ w +:(。*)/ $ 1:$ 2 /'FILENAME