2013-07-17 3 views
2

простой вопрос, но мой SED команды не работает :(подстроку из Баш переменной, начиная с позиции символа

echo "some_class" | sed -e 's/.+\_\(.+\)/\1/' 

Я хочу, чтобы все, что происходит, чтобы быть после _ символов. Пожалуйста, как я могу исправить мой код работать Спасибо

в этом случае, «класс» является правильным ответом

ответ

3

Вам не нужно sed, вы можете использовать расширение параметров вернуть подстроку, начиная с первым _:..

foo=some_class 
echo "${foo#*_}" 
+0

+1 для использования Модульное –

3

это СЭД линия работает для примера:

sed 's/.*_//' 

с вашим примером:

kent$ echo "some_class"|sed 's/.*_//' 
class 
+0

ARGH. Я пробовал это раньше: sed -e's /.+_// ', но он не работает с + вместо *. Спасибо за ваше решение. – Perlnika

+0

@ Perlnika с BRE, вам нужно избежать '+', чтобы придать ему особый смысл. – Kent

+0

Благодарим вас за разъяснение. – Perlnika

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