将整个文件的数字替换为星号特定模式

将整个文件的数字替换为星号特定模式

在我的文件中我想将数字替换为*

例子:

data[0] ---> data[*]

我必须data[0]并且data[127]也想对整个文件执行此操作。那么我该如何只对数字执行此操作呢?

我尝试使用命令

sed 's/[[0-9][0-9]]/[*]/g'

但它不能正常工作。

所以请指导我。

答案1

这会将方括号内的所有数字替换为星号:

sed 's/\[[0-9]*\]/\[*\]/g'

答案2

回答:您可以按照以下方法修改暂定的 SED 表达式 ( sed 's/[[0-9][0-9]]/[*]/g'):

sed -E 's/\[[0-9]{1,3}]/[*]/g'

解释:

  • [使用反斜杠对初始方括号进行转义,\因为您希望表达式匹配文字[,而不是方括号内的任何字符。后续方括号无需转义。

  • 指定要匹配的数字位数:表示以开头到 的{1,3}任何自然数。要实现此功能,您需要启用13扩展正则表达式使用-Eswitch(没有它,你可以满足于)。根据以下情况,sed 's/\[[0-9]*]/[*]/g'它应该在你的 since 中可用:sedman sed

    -E 选项多年来一直受到 GNU sed 的支持,现在已包含在 POSIX 中。


Perl 的替代方案在这里:

perl -pe 's/data\[\K\d+(?=])/*/g'

相关内容