想知道最快的方法是从列表中的一些分隔字段中去除文本。
我的列表如下所示:
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