2016-05-09 2 views

ответ

1

Вы можете использовать cut команду: echo "p45-322-16.jpg" | cut -d"-" -f1

+0

Простой, и он работает, я тоже попробую. –

1

Вы должны ограничить то, что вы будете принимать. Прямо сейчас, вы принимаете слишком много, используя ., а характер жадных по умолчанию регулярных выражений потребляет слишком много символов.

Попробуйте либо ограничения, принятые символы только цифры, или конкретно за исключением тире:

\([0-9]*\).* 

\([^-]*\).* 
+0

другой вариант был бы, чтобы ваш начать регулярное выражение в тире: 'ы /-.*//' – mihi

2
echo "p45-322-16.jpg" | sed 's/\([^-]*\).*/\1/' 

.* часть вашего регулярного выражения жаден, так что читает, насколько это возможно, так что регулярное выражение все еще совпадает. Это означает, что он утверждает все до последнего -.

Используйте [^-]*, чтобы соответствовать всем, до -.

+0

Спасибо, большое объяснение! –

Смежные вопросы