У меня есть файл данных, который имеет следующие данные в нем:
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
Просто замена *
с +
(и Escape это, если Вы используете всего sed
, не sed -r
, как +
, является расширенный шаблон Regex):
sed 's/ [0-9]\+//g' data
Или
sed -r 's/ [0-9]+//g' data
В Regex *
указывает на нуль или больше соответствия предыдущего маркера, таким образом, в Вашем случае, если там не идет ни в какое сравнение т.е. никакие цифры после пространства то, что это было согласованным также.
, С другой стороны, если Вы используете +
, Вы соответствуете (по крайней мере) одной или нескольким цифрам после пространства, таким образом, Вы получите желаемый результат.