Как мне удалить все буквы до первой цифры с помощью sed?

#sed #freebsd

#sed #freebsd

Вопрос:

У меня есть следующие строки:

 XYZ2342
ABCD1323
KIL9824
 

И я хотел бы удалить все буквы в начале, поэтому я бы получил для приведенного выше примера:

 2342
1323
9824
 

Я пробовал это:

 echo "ABC12345" |  sed 's/[[:alpha:]]*[[:digit:]]//'
2345
 

Но это также удаляет первую цифру, как я могу заставить sed удалять только буквы (примечание: они всегда ASCII).

Я использую реализацию sed во FreeBSD, если это уместно.

Комментарии:

1. sed 's/[[:alpha:]]*//' будет работать для данного примера..

Ответ №1:

Не могли бы вы, пожалуйста, попробовать следующее. Нам нужно заменить все до первого появления цифр с начала, поэтому здесь нам нужно использовать [^0-9] регулярное выражение, что означает, что с начала заменяйте все до первого появления цифр на NULL здесь.

 echo "ABC12345" | sed 's/^[^0-9]*//'
 

Комментарии:

1. Это работает, спасибо, я приму ответ (я удалил g, потому что мне нужно только одно вхождение)