我有以下行(在名为的文件中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