sed 在不应该添加的地方添加字符

sed 在不应该添加的地方添加字符

我有以下行(在名为的文件中1atp.pdb

MASTER      421    1    5   16    9    0   12    6 3070    2   66   29  

我正在使用 sed:

grep MASTER 1atp.pdb | sed 's/[0-9]*/xddddd/'

得出的结果是:

xdddddMASTER      421    1    5   16    9    0   12    6 3070    2   66   29

之前没有任何字符MASTER,可能是什么问题?

答案1

这是一个正则表达式的事情。

发生的事情是,*匹配 0 个字符,因此匹配开头的位置。因此尝试+{1,} 表示 1 个或多个字符。此外,使用 sed-r确保识别+或。例如,如果您的 sed 有 或 或,则更好,它支持前瞻,例如,尽管您所需要的只是。{1,}sed -r 's/[0-9]+/xddddd/'sed -r 's/[0-9]{1,}/xddddd/'-R(?=c)-r

相关内容