在我的文件中我想将数字替换为*
例子:
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}
任何自然数。要实现此功能,您需要启用1
3
扩展正则表达式使用-E
switch(没有它,你可以满足于)。根据以下情况,sed 's/\[[0-9]*]/[*]/g'
它应该在你的 since 中可用:sed
man sed
-E 选项多年来一直受到 GNU sed 的支持,现在已包含在 POSIX 中。
Perl 的替代方案在这里:
perl -pe 's/data\[\K\d+(?=])/*/g'