我有一个数据文件,其中包含以下数据:
abcd.vc.9902 03493092 90239 m
abc 131323 78202 g
cdb.5491-3 03402394 23241 k
我正在尝试删除以空格开头的数字。所以我写的命令是
sed 's/ [0-9]*//g' data
输出结果如下
abcd.vc.9902m
abcg
cdb.5491-3k
如果你注意到,它删除了最后一个字母前的空格。我想要的输出是:
abcd.vc.9902 m
abc g
cdb.5491-3 k
答案1
只需*
用 替换+
(如果您使用的是 ,则将其转义sed
,而不是sed -r
,因为这+
是扩展的正则表达式模式):
sed 's/ [0-9]\+//g' data
或者
sed -r 's/ [0-9]+//g' data
在正则表达式中*
表示前一个标记的零个或多个匹配,因此在您的情况下,如果没有匹配,即空格后没有数字,它也会匹配。
另一方面,如果您使用+
,您将匹配空格后的(至少)一个或多个数字,因此您将获得所需的结果。